0

だから私はroを学んでいて、いくつかのフォームの例を試しています. Web の例のほとんどは erb 形式で、私のファイルは .haml 形式です。日、時間、年がかかる静的な dob フィールドを書き込もうとしています。

view
%label{:for => "patient_dob"} DOB
  %date_select {Date.today,start_year => getBirthDateStart(), :end_year => getBirthDateEnd() }

module ApplicationHelper
def getBirthDateStart()
  Time.now.year - 100
end

def getBirthDateEnd()
  Time.now.year
end
end

私のコードがあまり意味をなさないことはわかっていますが、私がやろうとしていることを説明してくれることを願っています. 誰かが私を正しい方向に向けることができますか?

4

2 に答える 2

5

「%date_select」はHTML要素ではありません。「%」を使用して、%title、%pなどを作成します

「%」を使用してHTMLを直接作成することをお勧めします。この場合、「%select」%を使用して選択ボックスを作成します。Ruby on Railsには、このようなコレクションを作成するために呼び出すフォームヘルパーがあります。

=label_tag "patient_dob", "DOB"
=date_select "patient", "dob", { start_year: 100.years.ago.year, end_year: Date.today.year, default: Date.today}

ドキュメント:http ://apidock.com/rails/ActionView/Helpers/DateHelper/date_select

于 2013-02-04T21:51:38.997 に答える
1

Haml では%、タグを開始し、 の=ようなヘルパー メソッドを使用しますdate_select。この例を次のように書き直すことができます。

=label_tag :patient_dob, "DOB"
=date_select :patient, :dob, :start_year => 5.years.ago, :end_year => 5.years.from_now

その他のいくつかのこと:

  • Ruby では、キャメルケースのメソッド名 ( などgetBirthStartYear) を使用することは慣習的ではありません。に固執snake_caseすれば、コードは Rails の他の部分や Ruby コミュニティと一貫性が保たれます。
  • ()メソッド呼び出しからも括弧を削除することもお勧めします。これにより、プロパティとメソッドの境界線が曖昧になり、内部 API の設計が改善されると思います。そのため、getのようなより意味のあるものを優先してを削除することもお勧めしますnew_patient_dob_start_year
  • 正直なところ、シンプルさと明確さのために、理由がなければ追加のメソッドを作成することは避けます。5.years.agoまたは5.years.from_now非常に読みやすく、メソッドが定義されている場所を別のプログラマーが検索する必要はありません。
于 2013-02-04T22:02:08.460 に答える