だから私は投稿とコメントのあるかなり典型的なブログアプリケーションを持っています。
各コメントは1つの投稿に属します投稿には多くのコメントを含めることができます。
基本的に、コメントモデルのattr_accessibleの下にpost_idを設定せずに、投稿の表示アクションにコメントのフォームを追加したいと思います。
私の投稿コントローラーには次のものがあります。
def show
@post = Post.find(params[:id])
@poster = "#{current_user.name} #{current_user.surname} (#{current_user.email})"
@comment = @post.comments.build( poster: @poster )
end
コメントコントローラーで何をすべきか完全にはわかりません(正直なところ、上記のコードが正しいかどうかはわかりません)。現時点で私は持っています:
def create
@post = Post.find(params[:post_id])
@comment = @post.comments.build(params[:post])
if @comment.save
redirect_to @post, notice: "Comment posted"
else
redirect_to @post, error: "Error!"
end
end
私のルート:
resources :comments
resources :posts do
resources :comments
end
そして最後にフォーム:
<%= form_for @post.comments.build do |f| %>
<%= f.label :content, "WRITE COMMENT" %>
<%= f.text_area :content, rows: 3 %>
<%= f.hidden_field :post_id, value: @post.id %>
<%= f.submit "Post" %>
<% end %>
ここでの問題は、postsコントローラーのshowアクションからcommentsコントローラーのcreateアクションにpost_idを渡す方法がないことです。どんな助けでも大歓迎です。前もって感謝します!