Rails 3没有控制器名称的URL

时间:2012-06-29 22:23:58

标签: ruby-on-rails routes urlhelper

假设我想在我的网站上创建一个包含Rails 3的博客,这将是我唯一拥有的博客。我想使用Rails来实现它,但我不喜欢Rails产生的URL。我想要这样的网址:

example.com/2012/05/10/foo

我不想要像我知道的那样(使用to_param):

example.com/entries/2012/05/10/foo

我仍然想使用像

这样的帮手
new_entry_path(@entry) # -> example.com/new
entry_path(@entry) # -> example.com/2012/05/10/foo
edit_entry_path(@entry) # -> example.com/2012/05/10/foo/edit
destroy_entry_path(@entry)
form_for(@entry)
link_to(@entry.title, @entry)

等等。然后,我会发表评论,并希望将它们作为自己的资源进行访问,例如

example.com/2012/05/10/foo/comments/5

并且那些网址也应该可以与普通的帮助者一起使用:

edit_entry_comment_path(@entry, @comment) # -> example.com/2012/05/10/foo/comments/5/edit

或类似的东西。

那么是否可以获取没有控制器名称的URL并仍然使用url helper方法?只需覆盖to_param将始终只更改url中控制器名称后的部分。获得一些示例代码真的很有用。

1 个答案:

答案 0 :(得分:13)

你的routes.rb可能有这样的行:

resources :entries

生成/entries/2012/05/10/foo形式的路径。


存在:path参数,允许您使用默认名称entries以外的内容。例如:

resources :entries, :path => 'my-cool-path'

将生成/my-cool-path/2012/05/10/foo形式的路线。


但是,如果我们将空字符串传递给:path ,我们会看到您正在寻找的行为:

resources :entries, :path => ''

将生成/2012/05/10/foo形式的路线。