我对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
字段是否为空,我都会收到此错误。你知道我可能错过了什么吗?奇怪的是它昨天正在运作。
答案 0 :(得分:5)
也许有点晚了,但我在这里找到了一些东西:
http://i18n.lighthouseapp.com/projects/14947/tickets/12-i18n-and-date_select-exception
祝你好运, 黛娜
编辑:我必须将语言环境.yml中的日期顺序更改为
- order: [ :year, :month, :day ]
+ order:
+ - :year
+ - :month
+ - :day
答案 1 :(得分: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
答案 2 :(得分: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文件添加内容。
答案 3 :(得分:0)
data_select function的签名有两个字符串参数来启动它,哈希直到第三个参数才开始:
date_select(object_name,method,options = {},html_options = {})
所以,你需要:
date_select(:user,:dob,:start_year =&gt; Time.now.year - 50,:end_year =&gt; Time.now.year - 5,:include_blank =&gt; true)