新しいデータを作成しようとすると、次のエラーが表示されます。私はnew_room_event_path(1)
ためlink_to
をクリックすると、上記のエラーがRails:ActionController :: UrlGenerationError、一致するルートがありません。必要なキーがありません
ActionController::UrlGenerationError (No route matches {:room_id=>nil, :action=>"index", :controller=>"events"} missing required keys: [:room_id]):
モデル
models/rooms.rb
has_many :events, inverse_of: :room, dependent: :destroy
has_many :amounts, inverse_of: :room, dependent: :destroy
accepts_nested_attributes_for :events, allow_destroy: true
models/events.rb
has_one :amount, inverse_of: :schedule, dependent: :destroy
accepts_nested_attributes_for :amount, allow_destroy: true
routes.rbを
...
resources :events, only: [:new, :create, :edit, :update]
resources :rooms do
resources :events
end
...
が表示されます。 root/rooms/1/events/new
を生成します。
<% if logged_in? %>
<% if current_user?(@user) %>
<% if schedule.rooms.blank? %>
<%= link_to "Add event", new_room_event_path(1), class: "btn btn-sn btn-primary" %>
<br>
<% end %>
<% end %>
<% end %>
ビューは、私がnew_room_event_path(1)
を指定する理由は、これは、データを作成するのは初めてであるということです。
events_controller.rb
before_action :load_room
def new
@event = Event.new
@event.room = @room
@event.build_amount
@event.amount.schedule = @room.schedule
@event.amount.room = @room
end
private
def load_room
if Room.exists?(id: params[:room_id])
@room = Room.find(params[:room_id])
else
@room = Room.new
end
end
あなたが私にどんな提案を与えることができればそれは理解される可能性があります。
少なくとも1つの部屋が作成されていますか?ハードコード値を渡しているようだから、私はこれを求めています... – SnehaT