Rails 3 - Невозможно создать новый пост, пока он находится в режиме SHOW другого поста. - PullRequest
0 голосов
/ 26 июля 2011

У меня есть модель с именем «Пост».Я хочу использовать модальную форму для создания нового поста, находясь в режиме ШОУ другого поста.То есть, пока я просматриваю пост с именем «Джон» в его представлении, я хотел бы иметь возможность создать новое сообщение прямо там.

Проблема, с которой я столкнулся, заключается в том, что идентификатор нового поста остаетсято же самое, что и сообщение, которое я просматриваю, и вызывает действие обновления вместо действия создания.Любые предложения о том, как справиться с этим?

1 Ответ

3 голосов
/ 26 июля 2011

Создайте новый пост с Post.new и используйте его в form_for:

<%= form_for Post.new %>
  <%= render "form" %>
<% end %>

Конечно, это означает, что вам нужно удалить form_for из вашей частичной формы, если она у вас есть, но это небольшая жертва, которую нужно сделать.

Однако, если вы действительно не хотите этого делать, вам придется пройти через локальную переменную в частичную форму, чтобы указать, какое сообщение вы хотите отобразить. На странице show вы увидите следующее:

<%= render :partial => "form", :locals => { :post => Post.new } %>

В представлениях new и edit вы сделаете это:

<%= render :partial => "form", :locals => { :post => @post } %>

Линия немного длиннее, но это позволит вам сохранить тег form_for внутри формы частичным и не засорять три других представления этим.

...