2011-01-19 14 views
1

私はカスタム検証マークアップ(3)

<div class="input-container"> 
    <label>Topic Title</label> 
    <div class="input-holder"> 
    <input type="text" /> 
    </div> 
</div> 

<div class="textarea-container"> 
    <label>Post</label> 
    <div class="textarea-holder"> 
    <textarea></textarea> 
    </div> 
</div> 

無効なフィールドがマークアップのすべての私のフォーム要素のために次のマークアップを達成しようとしている:

<div class="input-container alert"> 
    <label>Topic Title</label> 
    <div class="input-holder"> 
    <input type="text" /> 
    </div> 
</div> 
<div class="textarea-container alert"> 
    <label>Post</label> 
    <div class="textarea-holder"> 
    <textarea></textarea> 
    </div> 
</div> 

は、ここに私の現在のですHAMLマークアップ:

.input-container 
    = f.label :title, 'Topic Title' 
    .input-holder 
    = f.text_field :title 
.textarea-container 
    = f.label :body, 'Post' 
    .textarea-holder 
    = f.text_area(:body, :size => "60x10") 

今、私は自分のフォームのフィールドがinvaliある場合にアラートクラスを持つように、コンテナのdivをしたい場合は、私がする必要があるだろうかd?

答えて

0

私は同じことをしたいと思いますが、残念ながらそれを処理するためのきれいな方法を見つけられませんでした。

ActionView :: Base.field_error_procをオーバーライドすることはできますが、それは囲み要素では役に立ちません。

各フィールドのエラー( 'post.errors [' body '] .nil?')をチェックし、条件付きでアラートクラスを出力することで手動で行うことができます。

次のステップは、ロジックをビューヘルパーに抽出し、その後にさらに抽象化することができます。

しかし、もっと自動化されたRails-yの方法でこれを行うのはまだ素晴らしいことです。

0

それは個々の無効なフィールドをハイライトボックスのサポートのうちformtasticまたはsimple_form宝石のいずれかを使用するのが最適かもしれません。

ほとんどの場合、フィールドやそのコンテナのCSSクラスを変更することでこれを行うことができます。これは、スタイルシートでも使用できます。

+0

コンテナをスタイルするか、入力だけをスタイル設定しますか?それが重要な問題だから。私は答えに興味がありますが、私のプロジェクトにまだ別の宝石を加えたいというわけではありません。 –

+0

コンテナのスタイルを設定しても、CSSセレクタを使用して、基礎となるフィールドを見つけることができるはずです: '.alert input'または実際に使用するクラス。 –

+0

Nah、私は、上記の私の答えを参照して、含まれている要素をスタイルすることができるようにしたいと思うが、ActionView :: Base_field_error_procをオーバーライドの通常引用されているテクニックは、 。 –