2011-12-18 88 views
0

從一些railscasts(this one in particular)的外觀來看,似乎有一些自動生成的「* _path」變量不會發生在我身上。在這個rails投射中,edit_mutliple_products_path似乎是自動生成的(我通常不喜歡使用那個單詞)。當我按照同樣的步驟,並試圖訪問一個類似的路徑,我得到這個:在rails 3中自動生成路徑?

undefined local variable or method `edit_multiple_distributions_workflows_path' for #<#<Class:0x132b18a68>:0x132af3290> 
+0

「rake routes」是否顯示列表中的路徑? – Rahul 2011-12-18 06:27:40

回答

1

這是軌道2.X.軌,才能在Rails的3.改變路線,在這條線路下方添加的routes.rb:


resources :products do 
    collection do 
    post 'edit_multiple' 
    put 'update_multiple' 
    end 
end 

您將能夠與

edit_multiple_products_url 
edit_multiple_products_path 
update_multiple_products_url 
update_multiple_products_path 

,而不是edit_multiple_distributions_workflow_path訪問此路徑。順便說一句你從哪裏得到這條路?我沒有在railscast中看到它。

+0

是的,「distributions_workflows」來自我自己的項目。感謝您的幫助 – Ramy 2011-12-19 14:18:59

+0

也可以簡單解釋'* _url'和'* _path'之間的區別嗎? – Ramy 2011-12-19 14:23:33

+1

假設您是www.amazon.com products_path返回/ products而products_url返回www.amazon.com/products。基本上* _url返回以主機爲前綴的路徑,以及端口(如果有的話),而* _path只返回路徑。 – daniel 2011-12-19 16:47:49

1

在給定的教程,它看起來像它從舊的Rails的,這是它會產生路徑方法行:

map.resources :products, :collection => { :edit_multiple => :post, :update_multiple => :put } 

在軌道3,你可以看到它的用法在這裏的文檔:http://guides.rubyonrails.org/routing.html#resource-routing-the-rails-default

+0

我可以使用更高層次的路由。但謝謝你的指導。這非常有幫助。 – Ramy 2011-12-18 15:58:50