2015-05-08 3 views
1

У меня есть три модели: event, event_user, event_users_day.Вложенные атрибуты whitelisted все еще не указаны

событие принимает вложенные атрибуты event_user, который принимает event_users_day как вложенные атрибуты.

class Event < ActiveRecord::Base 
    has_many :event_users, :dependent => :destroy, :inverse_of => :event 
    accepts_nested_attributes_for :event_users, :allow_destroy => true 
end 

class EventUser < ActiveRecord::Base 
    belongs_to :event, :inverse_of => :event_users 
    has_many :event_users_days, :dependent => :delete_all 
    accepts_nested_attributes_for :event_users_days, :allow_destroy => true 
end 

class EventUsersDay < ActiveRecord::Base 
    belongs_to :event_users, inverse_of: :event_users_days 
    validates :event_users, :presence => true 
end 

Простая вложенная форма довольно прямо вперед:

= simple_nested_form_for :event_users do |f| 
    = f.fields_for :event_users_days do |day| 
    = day.input :event_day_id, as: :check_boxes, collection: @daygroups 
= f.submit :class => "btn btn-success" 

В моем контроллере event_user и атрибуты для event_users_days находятся в белом списке:

@event_user = EventUser.new(params.permit(:event_id), params[:event_users].permit(:id, event_users_days_attributes: [:id, :event_day_id])) 

Но когда я сохранить его только EventUser сохраняется, поскольку сервер сообщает мне, что event_users_days не разрешено:

Unpermitted parameter: event_users_days 

Любые идеи, что я делаю неправильно?

ответ

0

Ошибка Unpermitted parameter является литералом, поэтому ваша форма генерирует параметр event_users_days вместо ожидаемого параметра event_users_days_attributes, который по праву отвергается Rails.

Я не использовал nested_form в течение длительного времени, и если вы используете Rails 4, то я не уверен, что это лучший выбор (и это не обязательно), но даже в этом случае я думаю, что проблема заключается в том, что вы используете :event_users вместо @event_users - но в целом я бы рекомендовал переключиться на simple_form, если вы не в старом Rails (и если вы потом, то вы должны указать, что задавая вопросы о SO).

+1

Он отлично работал, мне пришлось использовать @event_users вместо: event_users – Lou