2012-02-10 7 views
0

私はdivを持っていますが、ユーザーがリンクをクリックして再びクリックすると隠れてしまいます。私たちはユーザーデータベースにブール値の列hide_todoを追加したので、user_controllerの値をテストするためのメソッドを追加しましたので、ユーザーが戻ったときにdivが折りたたまれて隠されるようにします。隠蔽はjQueryで行われ、ユーザがHideをクリックするとhide_todoの値をtrueに変更し、ユーザがShowをクリックするとfalseに変更します。 application.jsのRuby変数にはどうすればアクセスできますか?`application.js`のRuby変数のブール値にアクセスする

+0

をjQueryで非表示にするのではなく、コンテンツのちらつきを防ぐために、レンダリング時に 'display:none'でその要素にクラスを追加します。 divの状態を保存する場合は、このためにajaxを使用する必要があります。 – phoet

答えて

0

よく、私たちは$.get('toggle_hide');を使用して終了し、ブール値をブロッキングとマッピングする方法をコントローラーに追加して、route.rbのリソースにマッピングしました。しかし、提案をありがとう!

2

JSでRubyの変数にアクセスするには3通りの方法があります。「application.js:

A)は、アセットパイプラインとレールを3.1以上使用している場合、あなたはこのようなファイルに.erb拡張子を追加することができます。エルブ "。これで、.jsの中でerbタグを使うことができます。<%ruby.code(); %>これは私がこれを行うには奇妙な方法を言うでしょう、それは特別な場合にのみセンセーショナルになるでしょう。

B)通常、必要なデータをHTMLドキュメントのDOMに追加し、そこからデータを取得します。あなたのERBで例えば

(またはHAMLにおける類推のように)テンプレートのようSTHん:

のjQueryで今
<div id="collapsable" data-show="<%= model.hide.todo%>"> </div> 

次の方法でデータにアクセスすることができます

hide_todo = $("#collapsable").data("show"); 

C)を別の方法は、レールアプリケーションからデータを返すajax呼び出しを行うことです。

私は2番目の方法をお勧めします。

関連する問題