Ruby on rails 3 如何使用:as并正确匹配路线?

Ruby on rails 3 如何使用:as并正确匹配路线?,ruby-on-rails-3,Ruby On Rails 3,我不知道我做错了什么。这是我的路线: resources :stores do get '/add_shoes' => 'stores#add_shoes', :as => :add_shoes end 我的路径应该是: 但它给出了路径不存在的错误。如何使用它们?如果我没有记错,因为它嵌套在resources块中,它将在末尾追加stores。因此,正确的路线是添加鞋子、商店和路径。有时,它还会在末尾添加一个索引(不确定为什么),以提供“添加鞋子”、“存储”和“索引”路径 因

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

resources :stores do 
   get '/add_shoes' => 'stores#add_shoes', :as => :add_shoes
end
我的路径应该是:


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

如果我没有记错,因为它嵌套在
resources
块中,它将在末尾追加
stores
。因此,正确的路线是添加鞋子、商店和路径。有时,它还会在末尾添加一个索引(不确定为什么),以提供“添加鞋子”、“存储”和“索引”路径

因为它是一个
get
调用,所以您可以将它放在
resources
块之外

此外,Rails实现这一目标的更多方法是:

resources :stores do
  collection do
    get :add_shoes
  end
end
关于如何处理它,你有很多选择。但是,简单提示一下,您可以从命令行键入
rake routes
,以获得所有可用路由及其指向的列表

如果您希望通过这种方式来清晰地理解代码,请记住:您的路线应该始终提到它们指向的位置。这将是
添加鞋子
商店
。拥有一个
add\u shoes\u路径
可以直接指向任何控制器,因为它并不是很详细。我肯定会坚持按Rails的方式来做——当你深入研究时,它会更有意义


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

这不是一个直接的答案,但您可以使用
rake routes
(根据您的设置,您可能需要执行
bundle exec rake routes
)查看应用程序知道的所有路由的列表。你应该可以在列表中找到它。在参考资料中这样做是否有区别,因为有一个单独的行以match而不是get开头?@Emily我确实查看了路线并返回:
store\u add\u shoes get/stores/:store\u id/add\u shoes(.
.对我来说是一条奇怪的路…..当我想成为
/add_shoes
@kobaltz时,我真的不明白你的意思。你的意思是如果我将它改为使用
match
而不是
get
?它仍然会给出相同的
名称错误