0

这是一个*helper.rb 的代码。而不是这 3 种方法(它们工作得很好)

def years_of_birth_select(form)
    form.select :year_of_birth, (1..31).to_a
  end

  def months_of_birth_select(form)
    form.select :month_of_birth, months
  end

  def days_of_birth_select(form)
    form.select :day_of_birth,  years
  end

我试图只调用一种方法

  def date_of_birth_select(form)
    form.select :day_of_birth,  years
    form.select :month_of_birth, months
    form.select :year_of_birth, (1..31).to_a
 end

它被称为

 = date_of_birth_select f

它只显示一个选择,,,:year_of_birth选择。

我做错了什么,我应该怎么做才能date_of_birth_select正确调用?

4

1 回答 1

0

视图中显示的表单元素是辅助方法的返回值,默认为最后一个表达式。第一种情况,每个方法只有一行,所以结果form.select ... 返回值,所以表单选择显示正常。但是,当您将它们合并到一个方法中时,不会返回前两行的返回值,因此您只能获得:year_of_birth选择。

要获得所有这些,您必须将返回值(字符串)连接在一起:

def date_of_birth_select(form)
  ((form.select :day_of_birth,  years) +
   (form.select :month_of_birth, months) +
   (form.select :year_of_birth, (1..31).to_a)).html_safe
end

最后html_safe是告诉rails它不应该转义字符串,否则默认情况下会这样做。

于 2012-08-28T22:42:35.817 回答