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



所以我一直在学习ror并尝试一些表单示例。网络上的大多数例子都是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

我知道我的代码没有多大意义,但希望它能解释我要做什么。有人能给我指正确的方向吗。

"%date_select"不是HTML元素。您将使用"%"创建诸如%title、%p 之类的内容

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

=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

在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非常容易阅读,不需要另一个程序员查找方法的定义位置

相关内容

  • 没有找到相关文章

最新更新