Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails haml和RubyonRails出生日期字段语法_Ruby On Rails_Ruby_Ruby On Rails 3_Ruby On Rails 3.1_Haml - Fatal编程技术网

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

Ruby on rails haml和RubyonRails出生日期字段语法,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.1,haml,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

所以我一直在学习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
我知道我的代码没有多大意义,但希望它能解释我想做什么。有人能告诉我正确的方向吗。

%date\u select”不是HTML元素。您将使用“%”创建%title、%p之类的内容

您需要使用“%”直接创建HTML。在本例中,您将使用“%select”%来创建的选择框。在RubyonRails中,您将调用表单帮助器来创建这样的集合

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

%date\u select”不是HTML元素。您将使用“%”创建%title、%p之类的内容

您需要使用“%”直接创建HTML。在本例中,您将使用“%select”%来创建的选择框。在RubyonRails中,您将调用表单帮助器来创建这样的集合

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

文档:

在Haml中,您可以使用
%
来启动标记,并使用
=
等助手方法来选择
日期。您可以这样重写您的示例:

=label_tag :patient_dob, "DOB"
=date_select :patient, :dob, :start_year => 5.years.ago, :end_year => 5.years.from_now
还有几件事:

  • 在Ruby中,使用camelCase方法名(比如
    getBirthStartYear
    )是非传统的。坚持使用
    snake\u case
    ,您的代码将与Rails和Ruby社区的其余部分保持一致
  • 从方法调用中删除括号
    ()
    也是一个好主意。这有助于模糊什么是属性,什么是方法的界限,我认为这有助于更好的内部API设计。出于这个原因,我还鼓励您放弃
    get
    ,转而选择更有意义的东西,比如
    新患者\u dob\u开始年
  • 不过,老实说,为了简单明了,如果没有理由,我会避免使用其他方法
    5年前
    5年后
    非常容易阅读,并且不需要其他程序员查找方法定义的位置

在Haml中,您可以使用
%
来启动标记,并使用
=
等辅助方法来选择
date
。您可以这样重写您的示例:

=label_tag :patient_dob, "DOB"
=date_select :patient, :dob, :start_year => 5.years.ago, :end_year => 5.years.from_now
还有几件事:

  • 在Ruby中,使用camelCase方法名(比如
    getBirthStartYear
    )是非传统的。坚持使用
    snake\u case
    ,您的代码将与Rails和Ruby社区的其余部分保持一致
  • 从方法调用中删除括号
    ()
    也是一个好主意。这有助于模糊什么是属性,什么是方法的界限,我认为这有助于更好的内部API设计。出于这个原因,我还鼓励您放弃
    get
    ,转而选择更有意义的东西,比如
    新患者\u dob\u开始年
  • 不过,老实说,为了简单明了,如果没有理由,我会避免使用其他方法
    5年前
    5年后
    非常容易阅读,并且不需要其他程序员查找方法定义的位置

谢谢你的提示。在上面的示例中,有没有办法将格式更改为年月日?是的。只需添加一个
:order=>[:月、日、年]
选项。看看谢谢你的提示。有没有办法在上面的例子中把格式改为年月日?是的。只需添加一个
:order=>[:月、日、年]
选项。看看