1

私はRubyonRails開発者としては非常に新鮮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_selectdobフィールドが空であるかどうかに関係なく、このエラーが発生します。何が欠けているのか分かりますか?奇妙なことに、昨日は機能していました。

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での作業でも同じ問題が発生しました。英語ではすべてが完璧に機能しました。ただし、別の言語で表示すると、ビューで「記号を文字列に変換できません」というエラーがスローされました。

私が使用した解決策は、次のように「:locale」を追加して「date_select」の言語を設定することでした。

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

そうすれば、他の言語を使用するときに他のi18nymlファイルに何かを追加する必要がなくなります。

于 2013-09-30T18:53:54.360 に答える
0

data_select関数のシグニチャには、それを開始するための2つの文字列パラメータがあります。ハッシュは3番目のパラメータまで開始されません。

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 に答える