2011-12-18 83 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