我不知道我在做什麼錯。這是我的路線:你如何使用:as和正確匹配路線?
resources :stores do
get '/add_shoes' => 'stores#add_shoes', :as => :add_shoes
end
我的路徑應該是:<%= link_to "Add Shoes", add_shoes_path %>
但它給該路徑不存在錯誤。我如何使用它們?
我不知道我在做什麼錯。這是我的路線:你如何使用:as和正確匹配路線?
resources :stores do
get '/add_shoes' => 'stores#add_shoes', :as => :add_shoes
end
我的路徑應該是:<%= link_to "Add Shoes", add_shoes_path %>
但它給該路徑不存在錯誤。我如何使用它們?
如果我記得正確,因爲它嵌套在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路由。
不是一個直接的答案,但是你可以使用'rake routes'(你可能需要根據你的設置做'bundle exec rake routes')來查看你的應用知道的所有路由列表。你應該能夠在列表中找到它。 – Emily
在做資源時有沒有區別,因爲有一個單獨的行以匹配開始而不是獲取? – kobaltz
@Emily我確實看了一下路線,然後回來了:'store_add_shoes GET/stores /:store_id/add_shoes(.'。奇怪的路線給我.....當我想只是'/ add_shoes'。 – LearningRoR