0

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

domain.com/share/5

5记录 ID 在哪里)类似于:

domain.com/share/johnsmith/5

wherejohnsmith存储在记录中5。我在这两条路线之间交替但没有成功:

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

在这两种方法之间:

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

中的显示方法ShareController非常标准。


问题:

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

4

2 回答 2

1

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

查看正在发生的事情的最佳提示:

在您的浏览器中调用 URL(或使用curl或其他),然后查看您开始的控制台rails s(或rails server)。

在那里你应该看到这样的东西:

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

关于path方法:

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

于 2013-03-01T01:22:51.620 回答
0

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

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

我根本不明白.and/问题。我重新启动了一切,它就消失了。

于 2013-03-01T02:45:37.120 回答