У меня есть компания, у которой есть одна подписка.Теперь мне нужна форма для добавления или редактирования компании и подписки, поэтому я использую «accepts_nested_attributes_for».Это (часть) модели компании:
has_one :subscription, :dependent => :destroy
accepts_nested_attributes_for :subscription
Это (часть) модели подписки:
belongs_to :company
В контроллере у меня есть это:
def new
@company = Company.new(:subscription => [Subscription.new])
end
def create
@company = Company.new(params[:company])
if @company.save
redirect_to root_path, notice: I18n.t(:message_company_created)
else
render :action => "new"
end
end
def edit
@company = Company.find(params[:id])
end
def update
@company = Company.find(params[:id])
if @company.update_attributes(params[:company])
redirect_to root_path, :notice => I18n.t(:message_company_updated)
else
render :action => "edit"
end
end
И форма выглядит следующим образом:
<%= f.fields_for(:subscription) do |s_form| %>
<div class="field">
<%= s_form.label I18n.t(:subscription_name) %>
<%= s_form.text_field :name %>
</div>
<% end %>
Это дает 2 проблемы:
- Поле имени отображается только в форме редактирования, когда компания уже имеет подписку, не отображается при добавлении новой компании
- При редактировании компании и изменении поля имени подписки изменение не сохраняется.
Что я делаю неправильноВот?
Я использую Rails версии 3.1