torutkのブログの続きです。用語一覧表示において、べたに一覧表示する方法と、カテゴリ毎に一覧表示する方法とをラジオボタンで切り替える機能をどのように実装すればよいかを探っています。アプローチの模索スタンドアロン(デスクトップ)アプリケーションと違って、Webアプリケーションはサーバー側で表示(HTML)を生成するので、表示設定の変更もいったんサーバーに送って新たに表示を生成することになります。JavaScriptで表示を制御するとしたらJavaScriptを駆使して、ブラウザ上で表示を変更することもできないかとアプローチしてみましたが、表示する可能性のあるHTML要素を予め生成しておき、JavaScriptからHTML要素の表示有無を切り替えるといった振る舞いとなり、今回であればべた一覧表示とカテゴリ毎の一覧を両方生成し、どちらを表示するかを切り替えるといった実装になりそうです。ラジオボタンのコールバックにJavaScriptの関数を指定し、ラジオボタンが押されたら、対応するHTML要素を有効化し、残りを無効化するようなイメージです。document.getElementById("not_grouping")で取得すると、取得した要素のオブジェクトに対し、style.display="none"を設定すると非表示にすることができる模様です。力業過ぎるかと思い、実装には入りませんでした。フォームで制御するとしたらラジオボタンの設定をフォームでサーバーにサブミットし、サーバー側で設定を見てべた一覧表示かカテゴリ毎の一覧表示かを判別してHTMLを生成します。通常はモデルクラスを用意し、フォームではそのモデルのインスタンスを指定しインスタンスの属性を新規作成ならcreate、既存の変更ならeditアクションを実行します。今回は表示設定なのでモデルクラスはありません。表示設定をデータベース化するならモデルクラスからコントローラークラス、ビューとフルに作ってもよいですが、そこまで頑張らずに済む方法を追求します。用語コントローラーのindexアクションで、ラジオボタンの設定をリクエストパラメーターに持たせ、indexの描画時にパラメーターに応じてべた一覧表示かカテゴリ毎に一覧表示かを切り替えることとします。Rails)でフォームを実装するAPIとして利用できそうなものを探したところ次が見つかりました。今回はモデルクラスとモデルインスタンスを指定せずにフォームを実現したいので、モデルの指定が不要なform_tagまたはform_withを使用します。5.1で導入されました。doendといった感じです。用語一覧のコントローラーのindexアクションはルーティング設定でproject_glossary_termsの末尾に_pathを付けたものになります。メソッドはデフォルトではpostになってしまうので、明示的にgetを指定しています。%>ラベルの指定は不十分かもしれません(ラジオボタンと紐づくラベルを生成するにはさらなる指定が必要な模様)。form_tagを使用する場合、radio_buttonではなくradio_button_tagを使用するようです。form_withこれは、用語集プラグイン再構築で実装したので日記では省略します。9はてなブログをはじめよう!torutkさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。