我有这样的代码表单:
= form_for @offer, url: some_url_path do |offer|
= render partial: 'form', locals: { offer: offer }
使用form
部分我渲染其他部分
= render 'prices_table', offer: offer
prices_table
部分内容如下:
%tr
%td= check_box_tag(:outer_price_toggler, 1, params[:outer_price_toggler].present?, class: "price-toggler")
%td Aussenkabine
%td
.form-group.price-form-group
= offer.text_field :outer_price, class: "form-control actual-price"
%td
.form-group.price-form-group
= offer.text_field :outer_price_normal, class: "form-control normal-price"
:outer_price_toggler
复选框的目的是激活其他两个字段,但是toggler不是对象的一部分。此处params[:outer_price_toggler].present?
用于了解用户是否已选中此复选框,并且应为用户启用其他两个字段。对于添加新优惠,这可以很好地完成,但它不适用于编辑,因为最初我没有任何params[:outer_price_toggler]
存储在任何地方。
问题:
1)我可以以某种方式将这个:outer_price_toggler
添加到编辑页面上的参数吗?这是修改原始params
。
2)我是否可以获得:outer_price
和:outer_price_normal
的当前值,以确定是否应该激活此切换器?那么,我可以使用offer.outer_price.present? || offer.outer_price_normal.present?
而不是params[:outer_price_toggler].present?
之类的内容吗?
如果我使用这样的东西,我会收到undefined method 'inner_price' for #<ActionView::Helpers::FormBuilder:0x000000082b3bf0>
错误,但也许还有其他类似的方式?
答案 0 :(得分:1)
如果你也可以将@offer
对象作为本地传递到prices_table
部分,你可以
%tr
%td= check_box_tag(:outer_price_toggler, 1, offer_object.outer_price.persent? || offer_object.outer_price_normal.present?, class: "price-toggler")