質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

833閲覧

UrlGenerationErrorが解決できない

hiro6110

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/08/04 10:36

編集2020/08/04 14:20

前提・実現したいこと

グループと個人でチャットできるアプリで、チャット画面を開こうとすると以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

ActionController::UrlGenerationError in Groups#index
No route matches {:action=>"index", :controller=>"messages"}, missing required keys: [:user_id]

.friends = link_to user_messages_path, class: "friend" do

該当のソースコード

html

1.side__user-lists 2 フレンド 3 = link_to users_path, class: "member-add" do 4 = icon('fas', 'plus-square', class: 'addition') 5 .side__users 6 .friends 7 = link_to user_messages_path, class: "friend" do 8 .friend__name 9 10 .friend__message 11

html

1.user-addPage 2 .user-addPage__header 3 %h1 友達を追加する 4 = link_to "トップページに戻る", :back, class: 'button' 5 %ul.user-addPage__lists 6 - @users.each do |user| 7 %li.user-list 8 = user.name 9 .add-btn{"data-user-name": user.name} 10 .user-add 追加する

ruby

1class MessagesController < ApplicationController 2 before_action :set_group 3 before_action :set_user 4 5 def index 6 @message = Message.new 7 @UserMessage = @user.messages 8 @GroupMessage = @group.messages.includes(:user) 9 end 10 11 def create 12 @UserMessage = @user.messages.new(message_params) 13 if @UserMessage.save 14 respond_to do |format| 15 format.json 16 end 17 else 18 @UserMessage = @user.messages.includes(:user) 19 flash.now[:alert] = 'メッセージを入力してください' 20 render :index 21 end 22 23 @GroupMessage = @group.messages.new(message_params) 24 if @GroupMessage.save 25 respond_to do |format| 26 format.json 27 end 28 else 29 @GroupMessage = @group.messages.includes(:user) 30 flash.now[:alert] = 'メッセージを入力してください' 31 render :index 32 end 33 end 34 35 private 36 37 def message_params 38 params.require(:message).permit(:text, :image).merge(user_id: current_user.id) 39 end 40 41 def set_group 42 @group = Group.find(params[:group_id]) 43 end 44 45 def set_user 46 @user = User.find(params[:user_id]) 47 end 48 49end

試したこと

同じエラーがでてる人を探してみましたが、当てはまるものがありませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

= link_to user_messages_path(user),

なのですが、このままだと user がundefinedになります。
どのuserのmessegeを表示したいのですか?載っているviewからは読み取れませんでした。そのuserを引数に入れてください。

ん?
tag が ruby しかありませんが、railsですよね?

投稿2020/08/04 11:04

編集2020/08/04 11:05
winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiro6110

2020/08/04 11:23

すいません。rails です。 グループのチャットを開こうとしたときに出ました。 グループはいくつか作成済みです。 また、友達追加はまだ実装中で、友達0人状態なのですがそれが原因なのでしょうか?
winterboum

2020/08/04 11:27

いえ、「どのuserのmessegeを表示させたいのか」が無指定だからです。 userって友達?
hiro6110

2020/08/04 12:54

そういうことですね! = link_to user_messages_path(user), class: "friend" do だとNameErrorが出てしまいます。 current-user以外のuserを友達として登録するようにしています。
winterboum

2020/08/04 13:27

ですから、エラーが出るというのは回答に書いてあります。 で、ここでは誰か一人のuserを指定するようになっていますよね? それはどうやって決めるのですか?
hiro6110

2020/08/04 14:23

htmlのソースコードを追加しました。 user-addクラスの追加するを押して、userを指定するようにしています。
winterboum

2020/08/04 22:48

そのhtmlの話はしていません。 = link_to user_messages_path を使っているhtmlで、userをどう決めるのか、です
hiro6110

2020/08/05 00:24 編集

追加したときにfriend__nameに入るようにしていて(jsファイルで追加します)、そこで指定します。
winterboum

2020/08/05 02:14

= link_to user_messages_pathのあるhtmlで = link_to user_messages_path(user) する前に user = なんとか とできるということでしょうか? でしたらそれでエラーはなくなります。
hiro6110

2020/08/05 04:23

はい、できます!
winterboum

2020/08/05 06:06

ではそうしてみてください
hiro6110

2020/08/05 12:24

なんとか解決しました! ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問