2017-01-07 26 views
1

您好我正在使用Filterrific Gem爲我的用戶頁面添加搜索和篩選功能。未定義的方法`[]'爲零:NilClass在select_options [Filterrific Gem]

The Searching works just good,but got undefined method []'for nil:NilClass` error when I tried to implement the「sort by」filtering。

我這裏指的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 
} 

users_controller.rb

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 

以下是錯誤的截圖:

enter image description here

請幫助。謝謝!

+0

「@ filterrific.select_options」中是否有任何值?你檢查了嗎? – Deep

+0

@當然是。在那裏看到我更新的問題。我已經爲users_controller.rb添加了我的代碼 –

回答

0

在控制器中初始化時。參數不包含select_options。它們應包含select_options。現在它看起來:

「filterrific」=> { 「SEARCH_QUERY」=> 「」}

應當是這樣的

「filterrific」=> { 「SEARCH_QUERY」=> 「」 ,「select_options」=>您的選項}

相關問題