你如何使用:正确匹配路线?

时间:2012-05-15 21:42:23

标签: ruby-on-rails-3

我不知道自己做错了什么。这是我的路线:

resources :stores do 
   get '/add_shoes' => 'stores#add_shoes', :as => :add_shoes
end

我的路径应该是:<%= link_to "Add Shoes", add_shoes_path %>

但是它给出了路径不存在的错误。我如何使用它们?

1 个答案:

答案 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_shoesstores。拥有add_shoes_path可以指向任何控制器,因为它并不是真正的冗长。我肯定会坚持使用Rails的方式 - 当你深入潜水时它会更有意义。

最后,另一个想法 - 如果你在商店模型中添加鞋子,每个商店都有鞋子是有意义的。您应该为Shoes创建一个新模型并使用RESTFUL路由。