我真的很喜欢简短的 link_to 语法:
link_to "Ad", ad
但默认情况下,它会尝试使用 ad_path 方法,该方法不存在,因为它嵌套在杂志下。正确使用的路径是 magazine_ad_path
这仍然可以正常工作:
link_to "Ad", magazine_ad_path(ad)
但我觉得调用 magazine_ad_path 是多余的,因为层次结构是在我的路线中定义的。
广告属于_to 杂志和杂志 has_many 广告
知道如何更改路由或其他地方的默认方法吗?
简短的“pithier”语法是这里的第二个例子:http: //api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to
编辑:对不起,我不清楚我的 URL 结构。它必须是 /magazine/5/ad/12。我知道由于 Ad 中的外键,技术上不需要杂志的 id,但这就是他们想要的 URL。
这是我的路线.rb
MyApp::Application.routes.draw do
resources :magazines do
resources :ads do
member do
get :info, :preview, :send, :fetch
put :publish
end
end
end
end