要件
1.入力者の名称が表示されるようにする。
2.入力者が、新規入力と、削除ができるようにする。
3.コメントの入力、削除に、画面遷移・再読込を不要にする。
4.コメントの入力者のアイコンが表示されるようにする。
・まずは、子model(コメント)基本機能を作成する。
$ rails g model comment muserdtil_id:integer body:text photo:references
・routes.rbで親modelに対して以下の定義をする。
resources :photo do
resources :comments
end
・子modelはreferrences設定をすると、勝手にbelongs_to :photo設定してくれるので、設定は不要。
・親modelの方は、has_many設定が必要。
has_many :photos
・親modelのview:showに以下を追加
<h2>Comments</h2>
<ul>
<% if @bsc.photocomments.any? %>
<% @bsc.photocomments.each do |comment| %>
<li>
<%= comment.body %> (by <%= comment.muserdtil_id %>)
</li>
<% end %>
<% else %>
<li>no comment yet.</li>
<% end %>
</ul>
追加完了。
・子のモデルのControllerを作る。
$ rails g controller Comments
def create
@photo = Photo.find(params[:photo_id])
@comment = Photo.find(params[:photo_id]).comments.create(params[:comment])
redirect_to photo_path(@photo)
end
・親modelのview:showに投稿フォームを追加。
<h2>Add a comment</h2>
<%= form_for([@post, @comment]) do |f| %>
<div class="field">
<%= f.label :body %>
<%= f.text_area :body, :rows => 5 %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
私の場合、投稿者は、LoginSessionから取得してくるので、項目はなし。
・親controllerのshowにコメント枠を追加する。
# コメントの枠を作成する。
@photo = Photo.find(params[:id]).comments.build
お、ユーザ名が表示できていない。commentをreateする際に盛り込んでいないからですね。次回はコメント欄にユーザ名を表示する開発をします。
0 件のコメント:
コメントを投稿