こんにちは私は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は、エラーのスクリーンショットです:
助けてください。ありがとう!
'@ filterrific.select_options'に値はありますか?それを確認しましたか? – Deep
もちろん@Deepはい。その上に私の更新された質問を参照してください。私はusers_controller.rbに自分のコードを含めました。 –