嵌套资源的form_for
的助手的form_for不正确地确定一个命名空间内的路径,我嵌套的资源。有问题的机型是:论坛::线程和论坛::回复分别位于我的models目录下的“论坛”子文件夹。这是在导轨3 BETA 3.
的routes.rb
namespace :forum do
root :to => 'threads#index'
resources :threads do
resources :replies
end
end
应用/视图/论坛/回复/ _form.html.haml
...
- form_for [@thread, @reply] do |f|
...
应用程序/控制器/forum/replies_controller.rb
...
def new
@reply = Forum::Reply.new
end
...
错误
undefined method `forum_thread_forum_replies_path'
在参考上述在_form.html.haml概述的线
Editted溶液万一人不阅读反应:
<%= form_for [:admin, @person, @image] do |f| %>
旧回复:
我有一个管理命名空间和人们和图像资源的一个项目,这是我建立我在Rails3中的form_for的路上,我还没有找到一种方法,只是还没有做到这一点清洁剂......
<%= form_for [@person, @image], :url => admin_person_images_path do |f| %>
@Douglas:这不适合我。在我看来,路线中的名字应该是复数形式。当我不喜欢推荐的,错误的是:
undefined method `admin_admin_person_admin_image_path' for #<#<Class:0x55976d0>:0x55a9bc8>
我的解决方案,为新工作:
form_for @image, url: admin_person_images_path(@person, @image)
我的解决方案,为编辑工作:
form_for @image, url: admin_person_image_path(@person, @image)
IST有什么解决方案结合这种形式?
编辑(在一个形式解新的嵌套命名空间路线):
现在我曾在routes.rb中以下逻辑
resources :mobile_users do
namespace :candystore do
resource :transactions
end
end
为new_mobile_user_candystore_transactions形式是
<%= form_for [@mobile_user], url: mobile_user_candystore_transactions_path(@mobile_user), method: :post do |f| %>
以获得Candystore :: TransactionsController创建方法,而不是例如MobileUser创建方法或Candystore :: TransactionsController更新方法。
在Rails 3中,只为我工作正常的解决方案(为新的和编辑资源)是:
form_for @image, :url => url_for([:admin, @person, @image])
我一直在修复脚手架的东西_form这样的部分这么多年!谢谢! – nruth 2014-10-24 17:02:34
嗯,它和编写form_for [:admin,@person,@image]一样有效,因为form_for在内部调用了url_for。 – 2015-11-02 15:18:15
将这项工作既用于添加和编辑? – nlaq 2010-04-28 16:29:47
当然,你只需要将url更改为更新路径。 – Bitterzoet 2010-04-29 11:34:40
这要求我将url传递给我的表单部分...并不是什么大不了的事情,但似乎你不应该那样做。 – nlaq 2010-04-29 19:17:49