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

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

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

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

603閲覧

リンク先にidが入らない

Slimeda

総合スコア2

Haml

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/07/15 08:06

編集2020/07/15 08:53

前提・実現したいこと

railsでチャットアプリのカレンダー版を作っています。
groupのリンクを押すと、calendarのリンクにとび、calendarのリンクを押すと、messageのビューがですとゆうふうにしたいです。全てルーティングでネストしています。

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

エラーメッセージ ActionController::UrlGenerationError in Calendars#index No route matches {:action=>"index", :controller=>"messages", :group_id=>#<Calendar id: 1, date: "1/23", group_id: 1, user_id: 1, created_at: "2020-07-15 02:32:02", updated_at: "2020-07-15 02:32:02">}, missing required keys: [:calendar_id]

Messagescontroller

class MessagesController < ApplicationController before_action :set_calendar def index @message = Message.new @messages = @calendar @messages = @calendar.messages.includes(:user) end def create @message = @calendar.messages.new(message_params) if @message.save redirect_to calendar_messages_path(@calendar) else @messages = @calendar.messages.includes(:user) flash.now[:alert] = 'メッセージを入力してください。' render :index end end private def message_params params.require(:message).permit(:content, :image).merge(user_id: current_user.id) end def set_calendar @calendar = Calendar.find(params[:calendar_id]) end end

CalendarsController

class CalendarsController < ApplicationController before_action :set_group def index @calendars = @group end def new @calendar = Calendar.new @calendars = @group.calendars.includes(:user) end def create @calendar = @group.calendars.new(calendar_params) if @calendar.save redirect_to group_calendars_path(@group, @calendar) else render :new end end private def calendar_params params.require(:calendar).permit(:date).merge(user_id: current_user.id) end def set_group @group = Group.find(params[:group_id]) end end

GroupsController

class GroupsController < ApplicationController def index end def new @group = Group.new @group.users << current_user end def create @group = Group.new(group_params) if @group.save redirect_to root_path else render :new end end def edit @group = Group.find(params[:id]) end def update @group = Group.find(params[:id]) if @group.update(group_params) redirect_to root_path else render :edit end end private def group_params params.require(:group).permit(:name, user_ids: []) end end

エラーが出ているところのビュー

.wrapper .hoom .center .center__top %h2.center__top__name = current_user.name .center__naka %h5.center__naka__date Schedule .center__naka__new = link_to new_group_calendar_path do = icon('fas', 'calendar-plus', class:'new') .center__bottom - @calendars.calendars.each do |calendar| .center__bottom__list = link_to group_calendar_messages_path(calendar), class:"a" do .center__bottom__list__name = calendar.date

試したこと

= link_to group_calendar_messages_pathのリンクはrails routesで確認しているのであっています。

補足情報(FW/ツールのバージョンなど)

何かお気付きの箇所などありましたらご助言いただけると助かります。他のデータも必要でしたら載せますのでおっしゃってください。
お願いいたします!

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラーメッセージのとおりです。group_calendar_messages_pathには、group_idcalendar_id両方を指定する必要があります。

投稿2020/07/15 08:09

maisumakun

総合スコア145183

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

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

Slimeda

2020/07/15 08:12

calendar_idをリンクに指定する仕方が分からないのですがお答えしていただけれないでしょうか?
maisumakun

2020/07/15 08:14

groupとcalendarの関係はどのようなものでしょうか? (calendarはすでに指定されていますので、追加しないといけないのはgroupのほうです)
Slimeda

2020/07/15 08:18

group1でcalendarが多です! 質問の内容が間違っていたら申し訳ありません。
maisumakun

2020/07/15 08:20

でしたら、group_calendar_messages_path(calendar.group, calendar)としてみてはどうでしょうか?
Slimeda

2020/07/15 08:25

解決しました!ありがとうございます! 1日悩んでいたのでとても助かりました! ぜひご縁があればまたよろしくお願いします!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問