【发布时间】:2015-07-02 21:51:43
【问题描述】:
大家好,我正在使用 cocoon gem 构建嵌套表单。
has_many :filled_cartridges, inverse_of: :request, dependent: :destroy
accepts_nested_attributes_for :filled_cartridges, allow_destroy: true
这是我的请求模型。
在request.html.erb里面我有:
<%= f.fields_for :filled_cartridges do |filled_cartridge| %>
<fieldset class="nested-fields">
<%= filled_cartridge.autocomplete_field :cartridge_name, autocomplete_cartridge_cartridge_name_requests_path, :update_elements => {} %>
<%= filled_cartridge.hidden_field :_destroy %>
<%= link_to_remove_association "удалить", f %>
</fieldset>
<% end %>
强参数:
def request_params
params.require(:request).permit(:name, :address,:filled_cartridges_attributes => [:client_id,:cartridge_name,:cartridge_id,
:request_id,:count,:fill_date,:_destroy,:id],)
end
所以我有 destroy 和 id 参数以便能够销毁记录。 我想在一个实例中处理我的请求和填充墨盒模型。多亏了accepts_nested_attributes,我相信我可以做到这一点。
问题是它无法保存fill_Cartridge:
SQLite3::ConstraintException: NOT NULL constraint failed: filled_cartridges.client_id
我猜问题出在控制器方法内部:
@request = Request.new( request_params )
@client = Client.where("name = ?", @request.name).take
if params[:request][:filled_cartridges_attributes].present? and params[:stype_ids].present?
if params[:stype_ids].include? '1'
params[:request][:filled_cartridges_attributes].each do |_,value|
if @client.present?
value[:client_id] = @client.id
else
value[:client_id] = 0
end
value[:request_id] = 0 #временный id
@cartridge = Cartridge.where('cartridge_name=?', "#{value[:cartridge_name]}").take
if @cartridge.nil?
@cartridge = Cartridge.create!(:cartridge_name => "#{value[:cartridge_name]}")
end
value[:cartridge_id] = @cartridge.id
value[:cartridge_name] = @cartridge.cartridge_name
end
end
end
注意:我可以设置像 value[:parm] = something 这样的参数吗
【问题讨论】:
-
你试过了吗?
<%= filled_cartridge.autocomplete_field :cartridge_name, autocomplete_cartridge_cartridge_name_requests_path, :update_elements => {} %><%= filled_cartridge.hidden_field :_destroy %> -
@Amit Sharma,顺便说一句,这只是错字,该字段集最初是部分的。忽略它
-
为什么这个问题同时被标记为ruby-on-rails-4 和ruby-on-rails-3.2?
标签: ruby-on-rails ruby ruby-on-rails-4 ruby-on-rails-3.2 cocoon-gem