在ID之前的URL中添加记录属性

时间:2013-03-01 01:12:15

标签: ruby-on-rails ruby-on-rails-3 routing

我正在尝试将Rails中记录的特定属性添加到URL中,如下所示:

domain.com/share/5

(其中5是记录ID),如:

domain.com/share/johnsmith/5

其中johnsmith存储在记录5中。我在这两条路线之间交替取得了成功:

get "/share/:name/:id" => "share#show"
resources :share, :only => [:show]

在这两种方法之间:

share_path(doc.user.name, doc)
share_path(doc)

ShareController中的show方法非常标准。


问题:

在视图中使用share_path(doc.user.name, doc)生成指向/share/johnsmith.5的链接,而不是/share/johnsmith/5

2 个答案:

答案 0 :(得分:1)

get "/share/:name/:id" => "share#show"应该做的工作。但您可能需要查看routes.rb中路由的顺序,也许Rails走错了路线?

了解正在发生的事情的最佳提示:

在浏览器中调用该网址(或使用curl或其他内容),然后查看您的工作室rails s(或rails server)。

你应该看到这样的东西:

Processing by ShareController#show
Parameters: {"id"=>"5", "name"=>"johnsmith"}

关于path方法:

只需使用rake routes,它就会告诉您哪些路径方法可用。

答案 1 :(得分:0)

不知道发生了什么,但它解决了这个问题:

get "/share/:name/:id" => "share#show", :as => :share
share_path(doc.user.name, doc)

我根本没有得到./问题。我重新启动了一切,它已经消失了。