Rails 3在另一个控制器中呈现部分形式

时间:2011-06-08 05:27:34

标签: ruby-on-rails view partial form-for

我有一个部分用于命名空间和嵌套资源(“博客/帖子/评论”)的表单,到目前为止,这是一个很难正常工作。我设法让它为“新”和“编辑”动作(在评论控制器中)工作,但现在我想将它加载到父控制器(帖子)的“显示”视图中。但是,我尝试的任何东西都不会起作用。

以下是“/blog/comments/shared/_comment_form.html.erb”中表单的生成方式:

<%= form_for([:blog, @post, @comment], 
             :url => { :controller => :comments, :action => (@comment.persisted? ? :update : :create) }, 
             :html => { :id => "blog_post_comment_form", :class => "standard_form wide" }) do |f| %>

我尝试使用标准的“渲染”命令调用此部分但我收到以下错误,这很可能与我在上面的代码中为表单生成URL的方式有关:

No route matches {:action=>"create", :controller=>"blog/comments"}
actionpack (3.0.7) lib/action_dispatch/routing/route_set.rb:425:in `raise_routing_error'

以下是我的路线:

blog_post_comments     GET    /blog/posts/:post_id/comments(.:format) {:controller=>"blog/comments", :action=>"index"}
                       POST   /blog/posts/:post_id/comments(.:format) {:controller=>"blog/comments", :action=>"create"}
new_blog_post_comment  GET    /blog/posts/:post_id/comments/new(.:format) {:controller=>"blog/comments", :action=>"new"}
edit_blog_post_comment GET    /blog/posts/:post_id/comments/:id/edit(.:format) {:controller=>"blog/comments", :action=>"edit"}
blog_post_comment      GET    /blog/posts/:post_id/comments/:id(.:format) {:controller=>"blog/comments", :action=>"show"}
                       PUT    /blog/posts/:post_id/comments/:id(.:format) {:controller=>"blog/comments", :action=>"update"}
                       DELETE /blog/posts/:post_id/comments/:id(.:format) {:controller=>"blog/comments", :action=>"destroy"}

我一直用这个抨击我的头一周,所以任何帮助都非常感谢。谢谢!

1 个答案:

答案 0 :(得分:3)

jQuery救援!

$("div#form").load("<%= new_blog_post_comment_path(@post) -%> #blog_post_comment_form")

如果有人知道更好的方法,我会全力以赴!