Rails 2で非表示と表示の効果を作成するための最良の方法は何ですか?JQueryタイプのソリューションを使用するのですか、それとも、より良い、より良い、またはより簡単な組み込みの何かがありますか?
4 に答える
最も簡単な方法は、ビューでlink_to_functionを使用することです。
<%= javascript_include_tag :defaults %>
<%= link_to_function "toggle", "$('thing_#{@thing.id}').toggle()" %>
<p id="thing_<%= @thing.id %>">
<b>Body:</b>
<%=h @thing.body %>
</p>
これを行う別の方法はRJSを使用することですが、それはアプリケーションの方法に大きく依存します。そうすれば、RESTfulアクションの外部のカスタムアクションを探すようにコントローラーを設定するか、既存のアクションでXHRリクエストを探すようにする必要があります(「ifrequest.xhr?」を使用)。
RJSは非常に簡単です。
page["thing_#{@thing.id}"].toggle
個人的には、$(element).toggle()以外のものは、ビューのほとんどがロジックを含まないことになっているため、ビューの外側にある独自のRJSに値すると思いますが、おそらく多くの異なる意見がありますそれ。
javascriptフレームワークに関しては、プロトタイプ/スクリプトで利用できないものを本当に必要とする何かをしているのでない限り、簡単にするためにデフォルトのままにしておきます。
RailsにはPrototype/Scriptaculous javascriptライブラリがバンドルされていますが、それらを使用するかどうかはあなた次第です。結局、ある種のJavascriptを使用する必要があります。これを魔法のように行う、Railsに組み込まれている特別なものは何もありません。
私は個人的にjQueryをお勧めします-学習がより速く、より強力で拡張可能であることがわかりました。
$('#elementid').hide();
$('#elementid').show();
$('.elementClassname').show();
$('.elementClassname').hide();
あなたは同様にパラメータを与えることができます
$('.elementClassname').show('slow');
$('.elementClassname').show('normal');
$('.elementClassname').show('fast);
または数値も
$('.elementClassname').show(600);
あなたもトグルを使用します
$('.elementClassname').slideToggle();
JQueryは、プラットフォームに関係なく、RubyでもASP.NET/MVCと同じように機能する優れた選択肢です。