我正在尝试将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
。
答案 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)
我根本没有得到.
和/
问题。我重新启动了一切,它已经消失了。