У меня есть Post
объект модели, который имеет ссылку на родительский объект. Все методы edit
, new
и reply
используют один и тот же частичный шаблон.
Методы posts_controller
:
def edit
@post = Post.find(params[:id])
end
def reply
@post = Post.new
@replypost = Post.find(params[:id])
@post.title = @replypost.title
@post.parent = @replypost
end
Частичный код шаблона:
<% form_for(@post) do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :title %><br />
<%= f.text_field :title %>
</p>
<p>
<%= f.label :body %><br />
<%= f.text_area :body %>
</p>
<%= if :parent then f.hidden_field :parent end %>
<p>
<%= f.submit "Create" %>
</p>
<% end %>
Если я посмотрю на исходный HTML-код, сгенерированный частичным шаблоном, то увижу, что я передаю некоторый вид идентификатора объекта моему методу создания.
<input id="post_parent" name="post[parent]" type="hidden" value="#<Post:0x103e3bdf0>" />
Проблема в том, что когда я пытаюсь сохранить созданный мною новый объект, я получаю предупреждение о том, что он ожидает публикацию и получает строку. Я уверен, что смогу обойти это, установив и получив parent_id и передав его в моей форме, но мне интересно, нет ли лучшего способа сделать это, что-то более элегантное и Rails-esque.