Rails的路由帮助
我希望用户帖子的网址是这样的:Rails的路由帮助
example.com/users/username/post-name
我应该如何设置呢?
目前,桩模型包含:
def to_param
name.parameterize
end
(以连字符连接相应的职位名称)
routes.rb中包含:
map.resources :users
map.resources :posts
最好,我想说post_path (后),这将通过自动查找post.user来为我生成适当的路径。
我需要做些什么才能做到这一点?
还增加
map.resources :users do |user|
user.resources :posts
end
一种方式更多:
map.resources :users do |user|
user.connect ':name/:action', :controller => 'posts', :defaults => {:action => 'show'}
end
可用路线:
example.com/users/username/post-name
example.com/users/username/post-name/edit(任行动)
这to_param看起来不错,但像你想的内置佣工不链接到嵌套的资源,你必须使用user_post_path(user, post)
。当然,你可以写你自己的post_path
辅助方法,它可以按你想要的方式工作。
def post_path(post)
url_for [post.user, post]
end
这几乎工作。它给了我一个像/ users/username/posts/post-name这样的网址。我不希望url的'posts'部分存在。 – amaseuk 2010-08-18 10:43:54
嗨为了使应用程序识别像
example.com/users/username/post-name
路线,你应该添加到您的routes.rb
map.connect 'users/:username/:post', :controller => "users", :action => "test"
然后你就可以访问params[:username]
和params[:post]
您的控制器内部test
行动你应在0之后但在map ':controller/:action/:id'
之前定义它,但您必须编写自己的帮助呃那么
在这种情况下,如果您访问像/ users/first/second这样的路由,那么params [:name] = second和params [:user_id] = first – Bohdan 2010-08-18 13:21:52