前提・実現したいこと
グループに紐づいたメッセージが出力される機能です。
グループで紐づいたメッセージをeach文で取り出し、一つ一つのメッセージに
編集・削除・コメント機能を実装したいのですが、message自身のidが取り出せなくて、実装できないです。
誰か実装できる方がいれば教えて欲しいです。
発生している問題・エラーメッセージ
ruby
1ActiveRecord::RecordNotFound in MessagesController#index 2Couldn't find Message with 'id'=
該当のソースコード
model/group.rb
ruby
1has_many :users, through: :members 2has_many :messages, dependent: :destroy 3has_many :members
model/message.rb
ruby
1belongs_to :group 2belongs_to :user
Controller/messagescontroller.rb
ruby
1class MessagesController < ApplicationController 2 3 4 def index 5 @group = Group.find(params[:group_id]) 6 @users = User.order("created_at ASC") 7 @groups = Group.order("created_at ASC") 8 @message = Message.new 9 @rooms = Room.order("created_at ASC") 10 11 12 respond_to do |format| 13 format.html 14 format.json 15 end 16 end 17 18 def create 19 @group_message = Message.new(message_params) 20 @group = Group.find(params[:group_id]) 21 22 if @group_message.save 23 respond_to do |format| 24 format.html { redirect_to :group_messages, notice: "メッセージを更新しました。" } 25 format.json 26 end 27 else 28 render :index 29 end 30 end 31 32 33 def edit 34 @message = Message.find(params[:id]) 35 end 36 37 def update 38 @message = Message.find(params[:id]) 39 40 if @message.update 41 redirect_to group_messages_path 42 end 43 end 44 45 def destroy 46 @message = Message.find(params[:id]) 47 @message.destroy 48 redirect_to group_messages_path 49 end 50 51 private 52 def message_params 53 params.require(:message).permit(:text, :image).merge(group_id: params[:group_id], user_id: current_user.id) 54 end 55end
views/message/index.html.haml
ruby
1.content.clearfix 2 = render partial: 'module/sidemenu', locals: {groups: @groups, rooms: @rooms} 3 .right_content 4 .group_name.clearfix 5 = link_to group_path(@group) do 6 %span 7 = @group.name 8 = link_to group_path(@group), method: :delete do 9 %i.fa.fa-sign-out{"aria-hidden" => "true"} 10 = link_to edit_group_path(@group) do 11 %i.fa.fa-pencil-square-o{"aria-hidden" => "true"} 12 %i.fa.fa-cog{"aria-hidden" => "true"} 13 .chat_view 14 #message-field 15 = render partial: 'message', locals: {group: @group, mes: @one_message} 16 .form_view.clearfix 17 = form_for([@group, @message]) do |f| 18 = f.text_field :text, class: "form-field", placeholder: "テキストを入力してください" 19 = f.label :image, class: "image-label" do 20 %i.fa.fa-picture-o{"aria-hidden" => "true"} 21 = button_tag type: "submit", id: "message-submit-btn", data: {disable_with: false } do 22 %i.fa.fa-paper-plane{"aria-hidden" => "true"} 23
views/message/_message.html.haml
ruby
1- group.messages.each do |message| 2 .chat.clearfix{ "data-message-id": "#{message.id}"} 3 %span 4 = message.user.name 5 %p 6 = message.created_at.strftime("%Y/%m/%d %H:%M:%S") 7 = link_to group_messages_path(mes), method: :delete do 8 %i.fa.fa-times{"aria-hidden" => "true"} 9 %i.fa.fa-pencil-square-o{"aria-hidden" => "true"} 10 %i.fa.fa-reply{"aria-hidden" => "true"} 11 %h5 12 = message.text
あなたの回答
tips
プレビュー