1

rails には、 railCastのページと同じことを行うプラグインがあります。タグをフィルターのように使用します。

たとえば、ページの上部にある Type Free Episodes (右側) をクリックすると、

適用されたフィルター: 無料エピソード

他のカテゴリでも同じように入力し、「x」をクリックしてこのフィルターを削除します...

何か案が!!!!

4

2 に答える 2

0

Railscasts サイトには、エピソード タイプの 1 つをクリックすると、タイプ パラメータ セットがあります。タイプ パラメータを処理するインデックス アクションが必要です。設定されている場合は、タイプ固有のもののみをクエリし、そうでない場合はすべてのエピソードをクエリします。それはとても簡単です。たとえば、次のようになります。

class EpisodesController < ApplicationController

  def index
    if params[:type]
      @episodes = Episode.where(:specifc_type => params[:type]) 
      # or
      @episodes = Episode.to_klass(params[:type]).all # if you are using STI and have a to_klass method in your model, which generates the class constant out of the params, e.g => params[:type] => "pro", Episode.to_klass("pro") => ProEpisode, or something similar
    else
      @episodes = Episode.all
    end
  end
end

そして、あなたのビューでは、フィルターを単純にレンダリングします

アプリ/ビュー/エピソード/index.html.erb

<% if params[:type] %>
  <div class="filters">
    <strong>Applied Filters:</strong>
    <span class="filter">
      <%= your_helper_display_name(params[:type]) %>
      <%= link_to "x", root_path %> # removes the type params => the else case in your index action will be called.
    </span>
  </div>
<% end %>
于 2013-09-16T13:54:27.307 に答える