2012-03-19 5 views
1

Rails 3アプリでJqueryを使用して、ブール値フィールドがtrueかfalseかに基づいて、フォーム要素を動的に表示/非表示しようとしています。現在、私のjQueryの機能でブール値フィールドの状態に基づいてRailsフィールドを動的に表示する方法は?

は次のようになります。

$(function() { 
    $('#boolean').change(function(){ 
     if ($(this).value == true) { 
      $('.hidden-fields').show(); 
     } else { 
      $('.hidden-fields').hide(); 
     } 
    }); 
}) 

私が正しくブールフィールドは、この関数に値渡しするにはどうすればよいように:

  1. 機能は、ページのロード時に初期化され、隠されたフィールド/表示されたフィールド データベースの値に基づいて、
  2. ブール値が変更されると、フィールドはトグルされます。

申し訳ありませんが、簡単な質問です。私は、javascriptのグリップを取得しようとしていると本当に任意のポインタを感謝します。

答えて

1

おかげであなただけのIDブールのを使用してHTMLページ上の一つの要素を持っていますか? #booleanを使用すると、最初のものだけが返されるためです。多くの場合はクラスbooleanとし、.booleanを使用してそのクラスのすべての要素を参照する必要があります。

しかし、あなたの質問に:

1)あなたのコード例がページのロード時に実行されると自動的に)あなたがその道を行くと仮定すると(.booleanクラスで、すべての要素に適用されます。たとえば、DBの値がfalseに設定されているため、要素をすぐに非表示または表示したい場合は、ERBまたはHAMLなどのビューでページをレンダリングするときに行う必要があります。

2)このJSを接続する要素がselect(選択)ボックスまたはchange()関数を持つものであれば、すべて設定されます。 DBが変更されたときに、このビューが自動的に可視性を変更するのではないかと疑問に思っているならば、それは別のものです。

+0

こんにちはmrDanA、あなたの答えに感謝します。 1)もちろん、意味があります - doh!私はあまりにもjavascriptにハングアップしていた。 2)#booleanは1つのチェックボックスです。 trueの場合、後続のフィールドの数が表示され、すべてがclass .hidden-fieldsになります。 #booleanの状態は、現在関数に渡されていないようです。 #booleanをクリックすると.hiddenフィールドは非表示になりますが、後でクリックしても表示されません。何か案は? –

+0

か、真の状態の構文が間違っているのでしょうか?どちらの方法でも 'booleanがtrueならば'の部分が期待どおりに機能しない –

+0

私は現在、関数から条件文を取り出し、単純にtoggle()を使っています。理想的な解決策ではありませんが、今はその解決策です。もし誰かが構文についてアイデアを持っていれば、私はまだ条件付きで作業したいと思うでしょう。ありがとうございました –

関連する問題