我有一个用于命名空间和嵌套资源(“博客/帖子/评论”)的部分表单,到目前为止,要正常工作很痛苦。我设法让它适用于“新”和“编辑”操作(在评论控制器中),但现在我想将它加载到父控制器(帖子)的“显示”视图中。不过,我尝试过的任何方法都行不通。
以下是在“/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"}
一个星期以来,我一直在用这个把我的头从墙上敲下来,所以非常感谢任何帮助。谢谢!