2012-10-11 31 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