【问题标题】:Rendering a form partial block from a helper using concat使用 concat 从助手渲染表单部分块
【发布时间】:2017-05-20 18:07:25
【问题描述】:

我有一个辅助方法,可以根据传递的参数插入表单字段:

  def show_json_options(form, algorithm_options)
    algorithm_options.each do |o|
      concat content_tag :h5, o.name

      case o.selector_type
      when 'input'
        concat form.input o.input_name, input_html: { value: o.json_body[o.input_name] }
      when 'checkbox'
        concat form.input o.input_name, as: :boolean, label: o&.json_body['options']['name']
      when 'multiple_checkboxes'
        concat form.collection_check_boxes(o.input_name, get_multiple_options(o.json_body['options']), :first, :last)
      when 'radio_buttons'
        concat form.collection_radio_buttons(o.input_name, get_multiple_options(o.json_body['options']), :first, :last)
      else
        raise Exception.new('Unknown input.')
      end
    end
  end

没问题。但是,我想根据文档使用块扩展 collection_radio_buttons 的功能,例如:

<%= f.collection_radio_buttons :realm, [['External','External'], ['Internal','Internal']], :first, :last do |b| %>
  <%- b.label(class: "form-control") { b.radio_button(class: "form-control") } %>
<% end %>

如何将这三行传递到我的辅助方法中?我试过使用 concat 多行,显然没有成功。

【问题讨论】:

    标签: ruby-on-rails ruby simple-form


    【解决方案1】:

    还不能确定多行,所以现在使用内联解决方案:

        concat form.collection_radio_buttons o.input_name,
            get_multiple_options(o.json_body['options']), :first, :last,
            options = {
              item_wrapper_tag:         :span,
              item_wrapper_class:       :radio,
              collection_wrapper_tag:   :div,
              collection_wrapper_class: :options_radio_collection
            } {
              |b| b.radio_button(class: "radio_buttons") + b.text
            }
    

    【讨论】:

      猜你喜欢
      • 2017-11-10
      • 2012-01-31
      • 1970-01-01
      • 2020-10-19
      • 1970-01-01
      • 1970-01-01
      • 2011-03-20
      • 1970-01-01
      • 2011-02-26
      相关资源
      最近更新 更多