我遇到了nested_form gem的问题
我有5个型号:类别,组,参数,报价和价值。
因此,商品属于类别,价值属于商品和参数,参数在组合中,组属于类别。
典型示例如
Category: car Group: engine parameters Parameter: volume Parameter: power Group: producer Parameter: producer_name Parameter: year Parameter: country Category: bicycle Group: technical parameters Parameter: wheel diameter Parameter: weight Group: producer Parameter: producer_name Parameter: year Parameter: country
此参数的值属于商品。也许看起来很复杂,但在我看来,我说得很清楚。 我想构建表单,允许在用户注册期间创建许多商品。类别,参数和组是固定的。 现在我的模板是:
= simple_nested_form_for @user
Category.all.each do |category|
span= category.name
= f.simple_fields_for :offers do |f_offer|
= f_offer.input :category_id, :as => :hidden
- category.groups.each do |group|
span= group.name
- if f_offer.object.values.where("parameter_id IN (?)", group.parameters).empty?
- group.parameters.each do |parameter|
- variant.values.build(:parameter_id => parameter.id)
/ In this partial inputs for offer values in format parameter_name: input_field
= render :partial => 'values', :locals => { :f_offer => f_offer,
:f_group => group }
= f_variant.link_to_remove t("views.remove_variant")
= f.link_to_add "Add offer", :offers
它工作得很好,但问题是当我点击“添加商品”链接 - 表格添加了最后一个类别的参数。
所以我上面给出的例子,当我点击汽车类别的“添加报价”时 - 我看到一堆参数不是用于汽车,而是用于自行车!看起来我应该将类别传递给simple_fields_for或类似的东西,但我不知道该怎么做。
任何人都可以帮助我吗?
答案 0 :(得分:0)
我找到了解决此问题的方法:我添加了一个新的操作,例如“generate_form”,我在其中创建了新用户并向其添加了新的商品,并且在视图中我为这个新用户生成了带有嵌套字段的表单报价。
当用户点击“添加商品”链接时,我对此generate_form操作执行ajax请求,传递类别ID,但是作为响应我得到了,所以我剪切了嵌套表单,使用jQuery很容易,而且我还需要替换零提供随机生成的id,这两者都是由ajax“完成”回调执行的。
也许很难看,但最后还是有效的。 如果有人能提供另一种解决方案 - 我会很高兴看到它。