Rails形式,参数和对象方法

时间:2014-11-19 21:22:20

标签: ruby-on-rails forms partial params

我有这样的代码表单:

= 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>错误,但也许还有其他类似的方式?

1 个答案:

答案 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")