У меня есть частичная форма для вложенного ресурса с пространством имен ("блог/сообщения/комментарии"), который до сих пор не работал должным образом. Мне удалось заставить его работать для действий «новое» и «редактирование» (в контроллере комментариев), но теперь я хочу загрузить его в представление «показать» родительского контроллера (сообщения). Однако ничто из того, что я пробовал, не сработает.
Вот как создается форма в "/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"}
Я бьюсь головой об стену уже неделю, поэтому любая помощь очень ценится. Спасибо!
@blog
,@comment
, определенные перед рендерингом частичной формы? - person rubyprince   schedule 08.06.2011