我不知道自己做错了什么。这是我的路线:
resources :stores do
get '/add_shoes' => 'stores#add_shoes', :as => :add_shoes
end
我的路径应该是:<%= link_to "Add Shoes", add_shoes_path %>
但是它给出了路径不存在的错误。我如何使用它们?
答案 0 :(得分:2)
如果我没记错,因为它嵌套在resources
块中,它会将stores
追加到最后。所以正确的路线是add_shoes_stores_path。有时候它还会在最后添加一个索引(不确定原因),为你提供add_shoes_stores_index_path。
由于这是get
电话,您可以随时将其置于resources
阻止之外。
此外,更多Rails的方法是:
resources :stores do
collection do
get :add_shoes
end
end
你有很多关于如何处理它的选项。但只是一个快速提示,您始终可以从命令行键入rake routes
以获取所有可用路由的列表以及它们指向的位置。
如果您正在考虑这样做以清除代码,请记住:您的路线应始终提及他们指向的位置。这将是add_shoes
和stores
。拥有add_shoes_path
可以指向任何控制器,因为它并不是真正的冗长。我肯定会坚持使用Rails的方式 - 当你深入潜水时它会更有意义。
最后,另一个想法 - 如果你在商店模型中添加鞋子,每个商店都有鞋子是有意义的。您应该为Shoes创建一个新模型并使用RESTFUL路由。