嵌套资源的form_for

问题描述:

问题嵌套资源的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| %> 
+0

将这项工作既用于添加和编辑? – nlaq 2010-04-28 16:29:47

+0

当然,你只需要将url更改为更新路径。 – Bitterzoet 2010-04-29 11:34:40

+0

这要求我将url传递给我的表单部分...并不是什么大不了的事情,但似乎你不应该那样做。 – nlaq 2010-04-29 19:17:49

@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]) 
+0

我一直在修复脚手架的东西_form这样的部分这么多年!谢谢! – nruth 2014-10-24 17:02:34

+0

嗯,它和编写form_for [:admin,@person,@image]一样有效,因为form_for在内部调用了url_for。 – 2015-11-02 15:18:15