###実装内容
現在Facebookのようなアプリを作成中です。
コメントの表示・投稿・保存の機能は既に実装していますが、
現在hiddenフィールドを使用してるので、セキュリティー
を考えてsessionによる外部キーの値の挿入を行いたい。
###背景
ネットの記事やある講師から、
hiddenフィールドはセキュリティー上良くないため、あまり使わないよう言われていた。
その際、sessionを使った方法をするとよいと書かれていました。
そのため、sessionを使用しようと思いました。
###問題点
sessionを使おうとは書いてあったが、
具体的な方法は記載されておらず、
やり方がわかりません。
どのようにコードを記述して、
sessionによるコメントの保存をさせるのでしょうか?
お手数おかけしますが、
アドバイス宜しくお願いします。
###ソースコード
コメントの投稿フォームはshow.html.erbにレンダーする形で表示します。
show.html.er <%= @user.first_kanji%> <%= link_to '基本情報編集' ,edit_user_path(@user) %> <%= render 'follow_form' if logged_in? %> <hr /> <% if @user.microposts.any? %> <%= render partial: 'microposts/micropost', collection: @microposts %> <% end %>
userController class UsersController < ApplicationController before_action :set_user, only: [:show , :edit , :update ] def show @user = User.find(params[:id]) @microposts = @user.microposts @comments = @user.comments.build @replay = Replay.new if current_user.follower_relationships.any? if @user.id == current_user.id @follower_relationships = current_user.follower_relationships.find_by( params[:followed_id] == current_user.id) else @follower_relationships = current_user.follower_relationships.find_by(params[:follow_id] == @user.id , params[:followed_id] == current_user.id) end end if current_user.following_relationships.any? if @user.id == current_user.id @following_relationships = current_user.following_relationships.find_by(params[:follow_id] == current_user.id ) else @following_relationships = current_user.following_relationships.find_by(params[:follow_id] == current_user.id , params[:followed_id] == @user.id ) end end end
_micropost.html.erb <div id="micropost<%=micropost.id %>"> <% @micropost = micropost %> <p><%= micropost.user.first_kanji %> <%= micropost.user.last_kanji %>さん<br /> <%= micropost.content %> <% if current_user.following?(@user) && @following_relationships.status == 1 || current_user.follower?(@user) && @follower_relationships.status == 1 %> <%= render partial:'shared/comment_form' , locals:{comments: @micropost.comments} %> <% end %> <div id="comments<%=micropost.id %>"> <%= render partial: 'comments/comment' ,collection: @micropost.comments %> </div> <%- if current_user == micropost.user %> <%= link_to "削除", micropost , method: :delete , data:{confirm: "削除してよろしいですか?"} %> <% end %> </div> <hr />
_comment_form.html.erb <%= form_for(@comments,remote: true) do |f| %> <%= f.text_field :content , class: "comment_field" %> <%= hidden_field_tag :micropost_id , @micropost.id %> <%= hidden_field_tag :user_id , current_user.id %> <%= f.submit 'コメントする' %> <% end %>
お手数おかけしますが、
宜しくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/02 00:57