Я хочу спросить, является ли то, что я сделал, хорошей практикой.
У меня есть две модели: обсуждение имеет много сообщений .
В моих обсуждениях # show отображаются все сообщения. Теперь я хочу добавить форму, чтобы я мог создать новый пост на этом обсуждении.
Discussions_controller.rb show ()
@discussion = Discussion.find(params[:id])
@post = @discussion.posts.build
show.html.erb
<%= render :partial => 'posts/form' %>
<%= render @discussion.posts %>
<%= link_to 'Edit', edit_discussion_path(@discussion) %> |
<%= link_to 'Back', discussions_path %>
_post.html.erb
<div class="post">
<p>
<b>Content:</b>
<%= post.content %>
</p>
<%= link_to 'Edit', edit_post_path(post) %> |
<%= link_to 'Back', posts_path %>
</div>
Это вызовет ошибку в методах link_to 'edit' и 'back', потому что новый объект записи, который я построил, станет частью @discussion.posts, и поскольку это новое сообщение не является сохраненный, помощник url edit_post_path выдаст «Не найдено ни одного маршрута» ошибка (невозможно найти несохраненный пост).
Если я хочу сохранить методы link_to для редактирования и возврата, я должен отфильтровать вновь созданный (но не сохраненный) объект. Но почему-то я чувствую, что то, что я сделал, может быть хакерским, и хочу спросить, есть ли лучшая практика для достижения моей цели.