我非常喜欢简短的link_to语法:
link_to "Ad", ad
但是默认情况下,尝试使用ad_path方法,因为它嵌套在杂志下面,因此不存在。正确的使用途径是magazine_ad_path
这仍然可以正常工作:
link_to "Ad", magazine_ad_path(ad)
但是我觉得调用magazine_ad_path是重要的,因为heirarchy是在我的路线中定义的。
ad belongs_to杂志和杂志has_many广告
知道如何更改路线或其他地方的默认方法吗?
短“pithier”语法是这里的第二个例子:http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to
编辑: 抱歉,我的网址结构不清楚。它需要是/ magazine / 5 / ad / 12。我知道杂志的id在技术上是不需要的,因为广告中有外键,但这就是他们想要的URL。
继承我的routes.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
答案 0 :(得分:0)
您可以在命名空间资源中编写如下链接:
link_to "Ad", [:magazine, ad]
或者如果它是嵌套资源:
link_to "Ad", [magazine, ad]
答案 1 :(得分:0)
有一个:作为路线定义的选项:
resources :magazines do
resources :ads, :as => :ads
end
可以做这项工作。
修改强>
检查情况后,上述答案将无效。或者,您可以将resources :ads
添加到routes.rb(除了您已经拥有的嵌套声明之外)。