haml和ruby on rails出生日期字段语法

时间:2013-02-04 21:41:30

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 haml

所以我一直在学习ror并尝试一些表格示例。 Web中的大多数示例都是erb格式,我的文件是.haml格式。我正在尝试编写一个静态dob字段,需要白天,时间,年份。

view
%label{:for => "patient_dob"} DOB
  %date_select {Date.today,start_year => getBirthDateStart(), :end_year => getBirthDateEnd() }

module ApplicationHelper
def getBirthDateStart()
  Time.now.year - 100
end

def getBirthDateEnd()
  Time.now.year
end
end

我知道我的代码没有多大意义,但希望它能解释我想要做的事情。有人能指出我正确的方向。

2 个答案:

答案 0 :(得分:5)

“%date_select”不是HTML元素。您将使用“%”来创建%title,%p

之类的内容

您需要使用“%”直接创建HTML。在这种情况下,您可以使用“%select”%来创建s选择框。在Ruby on Rails中,你有一个表单助手,你可以调用它来创建这样的集合。

=label_tag "patient_dob", "DOB"
=date_select "patient", "dob", { start_year: 100.years.ago.year, end_year: Date.today.year, default: Date.today}

文档:http://apidock.com/rails/ActionView/Helpers/DateHelper/date_select

答案 1 :(得分:1)

在Haml中,您使用%启动标记,=使用辅助方法date_select。您可以像这样重写您的示例:

=label_tag :patient_dob, "DOB"
=date_select :patient, :dob, :start_year => 5.years.ago, :end_year => 5.years.from_now

其他一些事情:

  • 在Ruby中,使用camelCase方法名称(如getBirthStartYear)是非常规的。坚持使用snake_case,您的代码将与其他Rails和Ruby社区保持一致。
  • 从方法调用中删除括号()也是个好主意。这有助于模糊属性和方法背后的界限,我认为这有助于更好的内部API设计。出于这个原因,我还鼓励你放弃get支持更有意义的事情,例如new_patient_dob_start_year
  • 老实说,但为了简单和清晰起见,如果没有理由,我会避免制作其他方法。 5.years.ago5.years.from_now非常容易阅读,并且不需要其他程序员查找定义方法的位置。