2012-10-11 29 views
1

我在轨道开发人员中很新鲜的红宝石,并且在用户配置文件编辑窗体中显示date_field时遇到了一些麻烦。它突然停止工作,我无法调试什么是错的,为什么它不工作。这里是我的代码: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 

它给了我下面的错误:上这是一个与date_select线26

can't convert Symbol into String

。无论dob字段是否为空,我都会收到此错误。你有什么想法我可能错过了什么?奇怪的是,它昨天正在工作。

+0

明显的问题是你昨天和今天之间有什么变化? –

+0

哦,是的,我问自己同样的问题,但有太多的修改,我什至不记得他们所有人 – mbajur

+0

您是否使用版本控制? –

回答

0

data_select function签名具有两个串PARAMS来启动它,哈希不会开始,直到第三PARAM:

date_select(对象,方法,选项= {},html_options = {})

所以,你需要:

date_select(:用户:生日,:START_YEAR => Time.now.year - 50:END_YEAR => Time.now.year - 5日:include_blank =>真)

+0

这是表单生成器版本,它不要求第一参数,因为它是隐含的。 http://api.rubyonrails.org/classes/ActionView/Helpers/FormBuilder.html#method-i-date_select –

+0

上面的代码被封装在'form_for'块中,这就是为什么没有对象参数,但即使我将使用你的代码使用'@ object',它仍然给我同样的错误。 – mbajur

1

我有与i18n一样的问题。对于英语来说,一切都很完美。但在使用其他语言查看时,该视图丢弃了“无法将符号转换为字符串”的错误。

我使用的解决方案是设置为“date_select”添加语言“:区域”是这样的:

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

这样,你不会需要使用其他语言时,事情添加到其他国际化YML文件。

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