所以我一直在学习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
我知道我的代码没有多大意义,但希望它能解释我想要做的事情。有人能指出我正确的方向。
答案 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
其他一些事情:
getBirthStartYear
)是非常规的。坚持使用snake_case
,您的代码将与其他Rails和Ruby社区保持一致。()
也是个好主意。这有助于模糊属性和方法背后的界限,我认为这有助于更好的内部API设计。出于这个原因,我还鼓励你放弃get
支持更有意义的事情,例如new_patient_dob_start_year
。5.years.ago
或5.years.from_now
非常容易阅读,并且不需要其他程序员查找定义方法的位置。