Я пытаюсь настроить драгоценный камень кокона для вложенных форм в моем приложении Rails 5.Rails, Cocoon Gem - неопределенный метод `reflect_on_association 'для NilClass: Class
У меня проблемы с публикацией других, но, похоже, решения, которые с ними работали, не работают для меня.
У меня есть модели для адреса, организации и настройки. Ассоциации являются:
Адрес
belongs_to :addressable, :polymorphic => true, optional: true
Организация
has_many :addresses, as: :addressable
accepts_nested_attributes_for :addresses, reject_if: :all_blank, allow_destroy: true
Настройки
has_many :addresses, as: :addressable
accepts_nested_attributes_for :addresses, reject_if: :all_blank, allow_destroy: true
Мои настройки контроллера имеет:
def setting_params
params.require(:setting).permit(:newsletter,
addresses_attributes: [:id, :description, :unit, :building, :street_number, :street, :city, :region, :zip, :country, :time_zone, :latitude, :longitude, :_destroy]
)
end
Мои маршруты:
resources :organisations do
namespace :contacts do
resources :addresses
resources :phones
end
end
resources :users, shallow: true do
scope module: :users do
resources :assign_roles
resources :identities
resources :org_requests
resources :profiles
resources :settings do
namespace :contacts do
resources :addresses
resources :phones
end
end
end
Мой адрес Форма имеет:
Мои настройки формы есть:
<%= simple_form_for [@user, @setting] do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<%= f.input :newsletter, as: :radio_buttons, label: "Subscribe to our newsletter" %>
<%= simple_fields_for :addresses do |f| %>
<%= f.error_notification %>
<%= render 'contacts/addresses/address_fields', f: f %>
<%= link_to_add_association 'Manage address', f, :addresses, partial: 'contacts/addresses/address_fields' %>
<% end %>
</div>
<% end %>
Ошибка говорит:
undefined method `reflect_on_association' for NilClass:Class
Эта строка будет выделена в сообщении об ошибке:
<%= link_to_add_association 'Manage address', f, :addresses, partial: 'contacts/addresses/address_fields' %>
Для других проблема заключается в использовании единственного числа вместо множественного числа; или с помощью @addresses вместо: адреса (хотя некоторые из решений предложили его должны быть @ вместо:.
Я попытался каждый из них в каждой комбинации
Может кто-нибудь увидеть, что мне нужно. сделать, чтобы установить это?
ПРИНИМАТЬ Эдмунд ПРЕДЛОЖЕНИЕ
Я могу видеть из простой формы документации, вложенных атрибуты должны обрабатываться по-разному в формах.
https://github.com/plataformatec/simple_form/wiki/Nested-Models#example-for-strong-parameters
Я попытался изменить форму:
<%= simple_fields_for "addresses_attributes[]", address do |f| %>
Это не работает либо. Я не могу сделать страницу для проверки.
Строка ошибки в этом контексте указывает на проблему с новым действием в контроллере организации.То есть:
def new
@organisation = Organisation.new
@organisation.addresses_build
end
сообщение об ошибке говорит:
undefined method `addresses_build' for #<Organisation:0x007fcf6ff25f08>
Did you mean? addresses
мне вот интересно, если мне нужно построить address_attributes вместо адреса. Но когда я пытаюсь, я получаю сообщение об ошибке:
undefined method `addresses_attributes_build' for #<Organisation:0x007fcf72c26d68>
Did you mean? addresses_attributes=
Является ли ваша модель 'Setting' или' Settings'? – SteveTurczyn
setting.rb ................ – Mel