選択メニューを使用して、ユーザーが同じコンテンツの異なるビューを切り替えることができるようにするにはどうすればよいですか。たとえば、 http://railscasts.com/の右側を見てください。リストビュー、テーブルビュー、グリッドサムネイルビューを切り替えることができます。これを達成するための良い方法は何でしょうか?
質問する
1172 次
1 に答える
6
ビューごとにパーシャルを設定し、を使用session
して設定を保存するか、単にを使用することができますparams
。
def index
# ... code here
@partial = params[:view] || "default" # "grid", "list", etc.
end
でindex.html.erb
:
<%= render @partial %>
次に、各ビューの一部をコントローラーのビューフォルダーに保存し_grid.html.erb
ます_list.html.erb
。_default.html.erb
編集
この(現在は5歳の)回答に対するコメントに応えて、私は元のアドバイスを取り消し/修正しています。未確認のパラメータをに渡すrender
ことは、ファイルシステムから任意のデータを公開する可能性があるため、決して良い考えではありません。代わりに、ホワイトリストに登録する方法をお勧めします。
def index
@partial = whitelisted_partial || 'default'
end
def whitelisted_partial
%w(grid list).detect { |str| str == params[:view] }
end
そしてコメントへのより直接的な応答で:
render partial: @partial, locals: { ... }
于 2012-10-07T22:24:31.960 に答える