URL /xx/[:id]/yyの[:id]をform_withでdbに保存する方法を教えていただきたいです。ストロングパラメータのmergeやhidden_fieldなどを使いましたが、上手く行きませんでした。
route.rb Rails.application.routes.draw do root 'top_page#index' devise_for :users resources :calendars do resources :calendar_messages, only: [:index, :create, :destroy] end # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html end
コード class CalendarsController < ApplicationController def index @calendars = Calendar.all end def new @calendar = Calendar.new end def show @calendar = Calendar.find(params[:id]) end def create Calendar.create(calendar_params) redirect_to calendars_path end def destroy @calendar = Calendar.find(params[:id]) @calendar.destroy redirect_to calendars_path, notice:"削除しました" end def edit @calendar = Calendar.find(params[:id]) end def update @calendar = Calendar.find(params[:id]) if @calendar.update(calendar_params) redirect_to calendars_path, notice: "編集しました" else render 'edit' end end private def calendar_params params.require(:calendar).permit(:title, :content, :start_time) end end
コード calendar > show.html.erb <%= form_with(model: @calendar, local: true) do |form| %> <div class="title"> <%= form.label :title %> <%= form.text_field :title %> </div> <div class="time"> <%= form.label :start_time %> <%= form.datetime_select :start_time %> </div> <div class="content"> <%= form.label :content %> <%= form.text_field :content %> </div> <div class="submit"> <%= form.submit %> </div> <%= link_to "チャットへ", calendar_calendar_messages_path(@calendar.id) %> <% end %>
コード class CalendarMessagesController < ApplicationController def index @messages = CalendarMessage.find_by(calendar_id: params[:id]) @message = CalendarMessage.new end def create #CalendarMessage.calendar_id = params @message = CalendarMessage.new(calendar_message_params) if @message.save redirect_to calendar_calendar_messages_path else render calendar_calendar_messages_path end end def destroy end def calendar_message_params params.require(:calendar_message).permit(:message, :calendar_id) .merge(user_id: current_user.id) end end
コード calendar_messages > index.html.erb <%= form_with(model: @calendar_message, local: true) do |form| %> <div class="message"> <%= form.text_field :message, placeholder: "メッセージを入力" %> </div> <div class="submit"> <%= form.submit "送信" %> </div> <% end %>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。