2012-03-17 8 views
3

私はここでエラーの原因となったフィールドに近い形にいくつかのエラーを追加しようとしています私はこれをやっている方法:のRails:フォーム内の特定のフィールドに近いエラーが

<%= lesson_form.text_field :description %><br /> 
    <% unless @lesson.errors[:description].blank? %> 
    <span id="error_explanation"> 
     Description <%= @lesson.errors[:description].join(", ") %> 
    </span> 
    <% end -%> 

    <%= lesson_form.label :category %> 
    <%= lesson_form.text_field :category %><br /> 
    <% unless @lesson.errors[:category].blank? %> 
    <span id="error_explanation"> 
     Category <%= @lesson.errors[:category].join(", ") %> 
    </span> 
    <% end -%> 

私はしたいと思いますこれを行う反復的でない方が良いかどうかを知る。あなたが見ているように、エラーがなければ私は同じことを繰り返しています...それぞれのフィールドについて。

def errors_for(model, attribute) 
    if model.errors[attribute].present? 
    content_tag :span, :class => 'error_explanation' do 
     model.errors[attribute].join(", ") 
    end 
    end 
end 

とビューで:

<%= lesson_form.text_field :description %><br /> 
    <%= errors_for @lesson, :description %> 

    <%= lesson_form.label :category %> 
    <%= lesson_form.text_field :category %><br /> 
    <%= errors_for @lesson, :category %> 
<% end %> 

それとも、このようにあなたのためにそれをすべて行うなるsimple_formを使用することができます。

答えて

11

は、ヘルパーメソッドを使用し

<%= simple_form_for @lesson do |f| %> 
    <%= f.input :description %> 
    <%= f.input :category %> 
    <%= f.button :submit %> 
<% end %> 

をとあなたがsimple_formとhamlを使用している場合、物事は少しきれいに見えます:

= simple_form_for @lesson do |f| 
    = f.input :description 
    = f.input :category 
    = f.button :submit 

上記フィールドの横にエラーが表示され、属性の種類を検出し、すべての1つの単純なラインf.inputで、適切な入力ボックス(例えば、テキスト、パスワード、チェックボックスなど)が表示されます。

+0

簡易フォームの使用を開始しました。素晴らしいですね。ありがとう –

+0

ヘルパーメソッドの例は、typoを持っています、それはmodel.errorsでなければなりません[mode.errors [ – FearMediocrity

関連する問題