У меня есть одна форма для сохранения в базе данных, но я хочу сохранить некоторые поля, которые будут сохранены в другой записи.Вложенные атрибуты формы
<%= form_for @complaint, url: {action: 'create'}, :html => {:multipart => true} do |f| %>
<%= f.text_field :complaint_info %>
<%= f.fields_for :witness do |witnesses_form| %>
<%= witnesses_form.text_field :name %>
<% end %>
<% end %>
В мой контроллер:
def new
@complaint = Complaint.new
end
def create
@complaint = current_user.complaints.build(complaint_params)
if @complaint.save
redirect_to dashboard_complaint_path(@complaint)
else
render 'new'
end
end
private
def complaint_params
params.require(:complaint).permit(:complaint_info, witnesses_attributes: [:name])
end
на модели:
class Complaint < ActiveRecord::Base
belongs_to :user
has_many :witnesses
accepts_nested_attributes_for :witnesses
end
.
class Witness < ActiveRecord::Base
belongs_to :complaint
end
Но я получаю эту ошибку:
Unpermitted parameter: witness
Все, кажется, как это предполагают, чтобы быть, что я здесь отсутствует?
EDIT:
удалось сохранить запись, добавив:
@complaint.witnesses.build
к create
действия в контроллере, но он до сих пор не позволили мне сохранить :name
там
<ActiveRecord::Relation [#<Witness id: 1, name: nil, phone: nil, complaint_id: 8, created_at: "2015-06-08 20:05:06", updated_at: "2015-06-08
EDIT 2:
Удалось зафиксировать его, переместив @complaint.witnesses.build
с create
на действие new
, и он исправил его, теперь я могу создать запись и позволить мне сохранять в ней текстовые поля.
@chad_ что вы имеете в виду? –
Работает ли 'fields_for @ company.witnesses' лучше? –
@chad_ вы имеете в виду '@ complaints.witnesses', попробовал его, он отображает поле с уже введенным' Witness', попробовал его, и он дал мне тот же результат, не сохранил 'name:' –