前提・実現したいこと
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/ツールのバージョンなど)
何かお気付きの箇所などありましたらご助言いただけると助かります。他のデータも必要でしたら載せますのでおっしゃってください。
お願いいたします!
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/15 08:12
2020/07/15 08:14
2020/07/15 08:18
2020/07/15 08:20
2020/07/15 08:25