ご閲覧いただきまして、ありがとうございます。
基礎的な質問で恐縮ですが、Railsでコメント機能を付与したいと考えています。
ActionController::UrlGenerationError in Events#show missing required keys: [:event_id]
このようなエラーが発生してしまい、コメントできません。
event_id
がないから、パスまで辿りつけないというエラーかと思います。
/users/:id/events/:event_id/event_comments(.:format)
おそらく、ここのevent_idが取れていないのが原因かと思います。
下記のような、ビュー、コントローラーの構造になっているのですが、form時点でevent_idを出してあげるのには、どのやり方が得策でしょうか?
views/events/show.html.erb
Ruby
1・・・ 2 <% if user_signed_in? %> 3 <%= render partial: 'event_comments/form', locals: { comment: @comment, event: @event } %> 4 <% end %> 5・・・
views/events/_form.html.erb
Ruby
1<%= form_with(model: [event, comment] ) do |form| %> 2 <div> 3 <%= form.text_area :content %> 4 </div> 5 <div class="actions"> 6 <%= form.submit "コメントをする" %> 7 </div> 8<% end %>
controllers/events_controllers.rb
Ruby
1 def show 2 @event = Event.find_by_id(params[:id]) 3 @comment = EventComment.new 4 @comments = @event.event_comments 5 end
試してみたこと
Ruby
1<%= form_with url: event_event_comments_path(event_id: event.id) do |form| %> 2 <div> 3 <%= form.text_area :content %> 4 </div> 5 <div class="actions"> 6 <%= form.submit "コメントをする" %> 7 </div> 8<% end %>
このようにやってみたところ、エラーは発生しなくなったのですが、form.text_area
が今度は反応しなくなってしまいました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。