创建像这样的URL:用户/:在轨道上张贴

问题描述:

我只是想知道如何使理论上像localhost:3000 /:user/post /:post像Twitter一样https://twitter.com/PigsAndPlans/status/491290440512331776以及如何给这个帖子一个独特的编号和字母,像藤藤http://vine.co/v/M2JYAhg3HHY创建像这样的URL:用户/:在轨道上张贴

感谢

+0

我不假设你已经阅读过关于[路由系统](http://guides.rubyonrails.org/routing.html)的文章吗?这并修改'to_param'(见[这里](https://gist.github.com/cdmwebs/1209732))应该得到你所需要的。 – PinnyM

+0

@PinnyM路由文章当然有帮助。我已经看到它,但只是剔除它,错过了我需要的位哈哈,但对于编号我正在谈论更多关于实际生成的号码 – whyelse

+0

这是'to_param'进来的地方 - 请参阅链接的文章。 – PinnyM

像这样的事情在你的路由文件将匹配第一个URL模式

match ":username/post/:post_id", to: "users_posts#index" 

并在控制器中为您提供params[:username]params[:post_id]变量。不过,请仔细考虑将变量(:用户名)作为路线的第一部分。您必须确保您的应用永远不需要与该模式冲突的网址。更好的方法是您提供的vine URL网址,它有一个/v前缀。

您可以在配置/ routes.rb中下面的代码创建的URL模式

resources :users do 
    resources :posts 
end 

# http://localhost:3000/users/:user_id/posts/:post_id 
+0

@whyelse你可以看到http://stackoverflow.com/questions/6021372/best-way-to-create-unique-token-in-rails或http://stackoverflow.com/questions/19115929/generatinga-a- unique-url-with-token-in-rails-4-for-an-external-form-response来生成唯一标记 – Murtza