2

選択メニューを使用して、ユーザーが同じコンテンツの異なるビューを切り替えることができるようにするにはどうすればよいですか。たとえば、 http://railscasts.com/の右側を見てください。リストビュー、テーブルビュー、グリッドサムネイルビューを切り替えることができます。これを達成するための良い方法は何でしょうか?

4

1 に答える 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 に答える