我有一个公司它有一个订阅。 现在我想一个表单来添加或编辑公司和认购,所以我用“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版本