0

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

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

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

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

4

1 回答 1

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 路由。

于 2012-05-15T22:10:13.080 回答