将变量传递给Simple_Form自定义输入

时间:2012-09-17 17:29:15

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

我正在尝试使用simple_form自定义输入录制多个记录。我的意见是:

class InlinedateInput < SimpleForm::Inputs::Base
  def input
    "#{@builder.text_field("startmonth", input_html_options)}".html_safe + "/" +    "#  
    {@builder.text_field("startday", input_html_options)}".html_safe + "/" "# 
    {@builder.text_field("startyear", input_html_options)}".html_safe + "To:    " "#
    {@builder.text_field("endmonth", input_html_options)}".html_safe + "/" + "#
    {@builder.text_field("endday", input_html_options)}".html_safe + "/" "#
    {@builder.text_field("endyear", input_html_options)}".html_safe + "Price:" "#
    {@builder.text_field("price", input_html_options)}".html_safe
  end

  #Makes the label target the day input
  def label_target
    "month"
  end
end

基本上,问题是我在此输入中定义了一堆不同的输入。因此,如果我尝试在表单中使用此方法几次,它将只提交最后一个。我需要从表单中传递一个计数器变量,以便我可以拥有startday_1,startday_2等等。任何想法?

1 个答案:

答案 0 :(得分:4)

您可以通过选项哈希将所需的任何参数传递给自定义输入。

例如,您可以轻松地将自定义参数(计数器)传递给您的输入:

= f.input :my_field, :as => :custom_input, :counter => 2

并将其访问到您的自定义输入代码中:

class CustomInput < SimpleForm::Inputs::StringInput
  def input
    counter = options[:counter] || -1
    input_html_options[:value] = counter
    super
  end
end