現在railsでシステムを作っています。
コメント機能をajaxの部分テンプレートを使って更新したいのですが、上手くいきません。
投稿フォームに文字を入力してボタンを押すと、入力していた文字が消え、javasprictが反応しているはずなのですが
肝心のコメントを表示するパーシャルが動きません。
手動で更新ボタンを押すとコメント内容が反映します。
//app/controllers/comments_controller.rb class CommentsController < ApplicationController def create @micropost = Micropost.find(params[:micropost_id]) @comment = @micropost.comments.build(comment_params) @comment.user = current_user if @comment.save respond_to do |format| format.html { redirect_back(fallback_location: root_path) } format.js end else flash[:success] = "コメントできませんでした" redirect_back(fallback_location: root_path) end end def destroy @micropost = Micropost.find(params[:micropost_id]) @comment = @micropost.comments.find(params[:id]) @comment.destroy respond_to do |format| format.html { redirect_back(fallback_location: root_path) } format.js end end private def comment_params params.require(:comment).permit(:content, :post_id, :user_id) end end
//app/controllers/microposts_controller.rb class MicropostsController < ApplicationController def show @micropost = Micropost.includes(:user).find(params[:id]) @user = @micropost.user @comments = @micropost.comments.includes(:user).all @comment = @micropost.comments.build(user_id: current_user.id) if current_user end end
//app/views/microposts/show.html.slim .container div id='comments-area' = render partial: 'comments/comment_form', locals: { micropost: @micropost, comment: @comment } .container = render partial: 'comments/comments', locals: { comments: @comments }
//app/views/comments/_comment_form.html.slim = form_with(model: [micropost, comment], remote: true) do |f| .form-group.my-3 = f.text_area :content, class: 'form-control', placeholder: 'コメント(50文字以内)' .d-flex.justify-content-end = f.submit '送信', class:'btn comment-btn mt-1'
//app/views/comments/_comments.html.slim - comments.each do |comment| .d-flex.flex-wrap.my-3.ml-1 .user-image = link_to user_path(comment) do - if comment.user.avatar.attached? = image_tag comment.user.avatar, class: 'my-3 rounded-circle' - else = image_tag 'user_dummy.jpg', class: 'my-3 rounded-circle' .d-flex.flex-column.ml-2 small.text-muted = comment.user.name .comment-content small = comment.content
app/views/comments/create.js.erb $("#comments_area").html("<%=j(render 'comments', {comments: @comment.micropost.comments} ) %>"); $("textarea").val('');
app/assets/javascripts/application.js //= require jquery3 //= require popper //= require bootstrap-sprockets //= require turbolinks //= require rails-ujs //= require activestorage //= require_tree .
gem 'jquery-rails'もインストールしてあり、完全にお手上げです。
すいませんがよろしくお願いします。
ruby '2.6.3'
rails '5.2.3'
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/25 00:35