the event
saved, "artists":[]
blank, though selected multiple artists in new form. relevant part of new form looks this:
<%= f.fields_for :event_artists |fea| %> <%= fea.collection_select :artist_id, artist.all, "id", "name", {include_blank: true}, {multiple: true} %> <% end %>
the log:
parameters: {"utf8"=>"✓", "authenticity_token"=>"oeh0j/cp35s/fabhsetxeqknqzckxrbzmpeeee6p+ksm3qvf94zilub1rqad65ci5cp+r6tqs8v1f3sxiq6vtw==", "event"=>{"name"=>"", "date(1i)"=>"2016", "date(2i)"=>"7", "date(3i)"=>"22", "date(4i)"=>"01", "date(5i)"=>"55", "description"=>"", "venue_id"=>"1", "event_artists_attributes"=>{"0"=>{"artist_id"=>["", "1", "2"]}}}, "commit"=>"create"} unpermitted parameter: artist_id
here parameter permitted in controller
def event_params params.require(:event).permit(:id, :name, :date, :venue_id, :description, { event_artists_attributes: [:artist_id] }) end
event_artist model looks this:
class eventartist < applicationrecord belongs_to :event, optional: true belongs_to :artist end
event model:
class event < applicationrecord belongs_to :venue has_many :event_artists has_many :artists, through: :event_artists accepts_nested_attributes_for :event_artists, reject_if: :all_blank, allow_destroy: true end
event controller:
def create @event = event.new(event_params) if @event.save render json: @event, status: :created, location: @event else render json: @event.errors, status: :unprocessable_entity end end def new @event = event.new @artist = @event.event_artists.build end
you have event_artists_attributes
inside of unnecessary hash. instead, use:
params.require(:event).permit(:id, :name, :date, :venue_id, :description, event_artists_attributes: [artist_id])
but have problem. you're trying set multiple artist ids on eventartist
belongs_to
1 artist
. because have has_many artists, through: :event_artists
on event
model, can change following:
controller:
def event_params params.require(:event).permit(:id, :name, :date, :venue_id, :description, artist_ids: []) end
and in form, remove <%= fields_for…
block , replace with:
<%= f.collection_select :artist_ids, artist.all, "id", "name", {include_blank: true}, {multiple: true} %>
Comments
Post a Comment