[Rails]each文内での削除・編集・コメント機能の実装
受付中
回答 0
投稿
- 評価
- クリップ 0
- VIEW 1,129
前提・実現したいこと
グループに紐づいたメッセージが出力される機能です。
グループで紐づいたメッセージをeach文で取り出し、一つ一つのメッセージに
編集・削除・コメント機能を実装したいのですが、message自身のidが取り出せなくて、実装できないです。
誰か実装できる方がいれば教えて欲しいです。
発生している問題・エラーメッセージ
ActiveRecord::RecordNotFound in MessagesController#index
Couldn't find Message with 'id'=
該当のソースコード
model/group.rb
has_many :users, through: :members
has_many :messages, dependent: :destroy
has_many :members
model/message.rb
belongs_to :group
belongs_to :user
Controller/messagescontroller.rb
class MessagesController < ApplicationController
def index
@group = Group.find(params[:group_id])
@users = User.order("created_at ASC")
@groups = Group.order("created_at ASC")
@message = Message.new
@rooms = Room.order("created_at ASC")
respond_to do |format|
format.html
format.json
end
end
def create
@group_message = Message.new(message_params)
@group = Group.find(params[:group_id])
if @group_message.save
respond_to do |format|
format.html { redirect_to :group_messages, notice: "メッセージを更新しました。" }
format.json
end
else
render :index
end
end
def edit
@message = Message.find(params[:id])
end
def update
@message = Message.find(params[:id])
if @message.update
redirect_to group_messages_path
end
end
def destroy
@message = Message.find(params[:id])
@message.destroy
redirect_to group_messages_path
end
private
def message_params
params.require(:message).permit(:text, :image).merge(group_id: params[:group_id], user_id: current_user.id)
end
end
views/message/index.html.haml
.content.clearfix
= render partial: 'module/sidemenu', locals: {groups: @groups, rooms: @rooms}
.right_content
.group_name.clearfix
= link_to group_path(@group) do
%span
= @group.name
= link_to group_path(@group), method: :delete do
%i.fa.fa-sign-out{"aria-hidden" => "true"}
= link_to edit_group_path(@group) do
%i.fa.fa-pencil-square-o{"aria-hidden" => "true"}
%i.fa.fa-cog{"aria-hidden" => "true"}
.chat_view
#message-field
= render partial: 'message', locals: {group: @group, mes: @one_message}
.form_view.clearfix
= form_for([@group, @message]) do |f|
= f.text_field :text, class: "form-field", placeholder: "テキストを入力してください"
= f.label :image, class: "image-label" do
%i.fa.fa-picture-o{"aria-hidden" => "true"}
= button_tag type: "submit", id: "message-submit-btn", data: {disable_with: false } do
%i.fa.fa-paper-plane{"aria-hidden" => "true"}
views/message/_message.html.haml
- group.messages.each do |message|
.chat.clearfix{ "data-message-id": "#{message.id}"}
%span
= message.user.name
%p
= message.created_at.strftime("%Y/%m/%d %H:%M:%S")
= link_to group_messages_path(mes), method: :delete do
%i.fa.fa-times{"aria-hidden" => "true"}
%i.fa.fa-pencil-square-o{"aria-hidden" => "true"}
%i.fa.fa-reply{"aria-hidden" => "true"}
%h5
= message.text
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
まだ回答がついていません
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.23%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる