2017-01-07 3 views
1

こんにちは私はFilterrific Gemを使用してユーザページの検索機能とフィルタ機能を追加しています。未定義メソッド `[] 'for nil:select_optionsのNilClass [Filterrific Gem]

検索は正常に動作しますが、「並べ替え」フィルタリングを実装しようとすると、undefined method [] 'がnil:NilClass`エラーになります。

私はここFilterrificのマニュアルを参照してください:ここでhttp://filterrific.clearcove.ca/pages/action_view_api.html

は私のコードは次のとおりです。

index.html.erb

<div class="well"> 
    <%= form_for_filterrific @filterrific do |f| %> 
     <div> 
     <%= f.text_field(:search_query, id: "filterrific-no-ajax-auto-submit" ,class: 'form-control', placeholder: "Search users...") %> 
     </div> 

     <div> 
      Sorted by 
      <% f.select(:sorted_by, @filterrific.select_options[:sorted_by]) %> 
     </div> 
    <% end %> 
</div> 

<div class="row"> 
    <%= render(
     partial: 'users/list', 
     locals: { users: @users } 
    ) %> 
</div> 

model.rb

filterrific(
    default_filter_params: { sorted_by: 'first_name_asc' }, 
    available_filters: [ 
     :sorted_by, 
     :search_query, 
     :with_created_at 
    ] 
) 

scope :sorted_by, lambda { |sort_option| 
    direction = (sort_option =~ /desc$/) ? 'desc' : 'asc' 
    case sort_option.to_s 
    when /^first_name/ 

    order("users.first_name #{ direction }") 
    else 
    raise(ArgumentError, "Invalid sort option: #{ sort_option.inspect }") 
    end 
} 

ここ

def index 
    @filterrific = initialize_filterrific(User, params[:filterrific]) or return 
    @users = @filterrific.find.page(params[:page]).order('first_name ASC') 

    respond_to do |format| 
    format.html 
    format.js 
    end 
end 

users_controller.rbは、エラーのスクリーンショットです:

enter image description here

助けてください。ありがとう!

+0

'@ filterrific.select_options'に値はありますか?それを確認しましたか? – Deep

+0

もちろん@Deepはい。その上に私の更新された質問を参照してください。私はusers_controller.rbに自分のコードを含めました。 –

答えて

0

コントローラの初期化中。 paramsにはselect_optionsが含まれていません。それらにはselect_optionsが含まれます。今、それはようになります。

"filterrific" => { "SEARCH_QUERY" => ""} " "=>" filterrific "=> {" SEARCH_QUERY

をそれが何か

のようなものでなければなりません" 、 "select_options" =>あなたのオプション}

関連する問題