1

我是一个非常新鲜的 ruby​​ on rails 开发人员,我date_field在用户配置文件编辑表单中显示时遇到了一些麻烦。它突然停止工作,我无法调试出了什么问题以及为什么它不工作。这是我的代码:

_form.html.haml

= form_for(@profile) do |f|
  = f.label :dob, 'Date of birth', :class => 'control-label'
  = f.date_select :dob, :start_year => Time.now.year - 50, :end_year => Time.now.year - 5, :include_blank => true

它给了我以下错误:

无法将符号转换为字符串

在第 26 行,这是带有date_select. 无论dob字段是否为空,我都会收到此错误。你知道我可能错过了什么吗?奇怪的是它昨天还在工作。

4

4 回答 4

5

也许有点晚了,但我在这里找到了一些东西:

http://i18n.lighthouseapp.com/projects/14947/tickets/12-i18n-and-date_select-exception

最好的问候,黛娜

编辑:我不得不将语言环境 .yml 中的日期顺序更改为

 -    order: [ :year, :month, :day ]
 +    order:
 +      - :year
 +      - :month
 +      - :day
于 2013-01-08T11:45:22.837 回答
2

这是一个翻译问题:您必须在文件中添加:order规则it.yml或在表单中添加:order为参数。

= f.date_select :dob, :start_year => Time.now.year - 50, 
                      :end_year => Time.now.year - 5, 
                      :order => [:day, :month, :year],
                      :include_blank => true
于 2014-06-25T08:24:07.423 回答
1

我在使用 i18n 时遇到了同样的问题。一切对英语来说都很好;但是当使用另一种语言查看时,视图抛出了“无法将符号转换为字符串”错误。

我使用的解决方案是为“date_select”添加“:locale”设置语言,如下所示:

<%= f.date_select(:admissionyear, :start_year => 1940, :end_year => Date.today.year, :discard_day => true, :discard_month => true, :locale => 'en') %>

这样,您在使用其他语言时就不需要向其他 i18n yml 文件添加内容。

于 2013-09-30T18:53:54.360 回答
0

data_select 函数的签名有两个字符串参数来启动它,哈希直到第三个参数才开始:

date_select(object_name, method, options = {}, html_options = {})

所以,你需要:

date_select(:user, :dob, :start_year => Time.now.year - 50, :end_year => Time.now.year - 5, :include_blank => true)

于 2012-10-11T23:01:23.377 回答