Я застрял, пытаясь получить мою форму с collection_select для сохранения.У меня есть 3 модели (События, Пользователи, Предметы), плюс модель соединения, чтобы связать Предметы с Событиями (Event_Items).
Моя цель - чтобы каждый пользователь мог присоединиться к событиям, и каждый пользователь может указать список предметов, которые они будут приносить на событие из инвентаря, уникального для каждого пользователя.
Моя частичная форма с выбором коллекции выглядит следующим образом:
<%= form_for [@event, @event_items], remote: true do |f| %>
<%= f.hidden_field :user_id, value: current_user.id %>
<div class="form-group">
<%= f.collection_select(:item_id, current_user.items.all, :id, :title, { :prompt => "Select an Item", :selected => @item_id}, { class: "form-control"}) %>
</div>
<%= f.submit "Submit", class: "btn btn-primary", id: "event-item-button" %>
Мой event_items_controller выглядит следующим образом:
class EventItemsController < ApplicationController
before_action :authenticate_user!
def new
@event_item = EventItem.new
end
def create
@event_item = EventItem.new
@event = Event.find(params[:id])
if @event_item.save
flash[:success] = "Item Added to List"
redirect_to @event
else
flash.now[:danger] = "Please try again"
redirect_to @event
end
end
def destroy
@event_item = EventItem.find(params[:id])
end
private
def event_item_params
params.require(:event_item).permit(:event_id, :user_id, :item_id)
end
end
На странице показа событий у меня есть этот раздел, в котором я повторяюсь для каждого участника иотобразить партиалы Event_Item:
<% @event.attendees.each do |user| %>
<div class="col-md-4">
#should render each existing item on the list.
#Doesn't work yet
<%= render 'event_items/event_item' %>
</div>
<% if user == current_user %>
#renders dropdown with only current user's inventory
#currently shows items correctly, just doesn't save to
#database
<%= render 'event_items/form' %>
<% end %>
<% end %>
Всякий раз, когда я нажимаю кнопку Отправить после выбора элемента в раскрывающемся списке, в базу данных ничего не сохраняется, хотя на консоли сервера отображается:
Started POST "/Events/27/event_items" for 127.0.0.1 at 2018-09-26 19:54:32 -0500
Processing by EventItemsController#create as JS
Parameters: {"utf8"=>"✓", "event_item"=>{"user_id"=>"5", "item_id"=>"2"}, "commit"=>"Submit", "event_id"=>"27"}
User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ? [["id", 5], ["LIMIT", 1]]
Completed 404 Not Found in 2ms (ActiveRecord: 0.3ms)
ActiveRecord::RecordNotFound (Couldn't find Event without an ID):
app/controllers/event_items_controller.rb:11:in `create'