#ruby-on-rails #activerecord #filterrific
#ruby-on-rails #activerecord #filterrific
Вопрос:
Я использую Filterrific gem, чтобы попытаться отсортировать события по месяцам и годам, однако я получаю следующую ошибку:
ArgumentError at /events
wrong number of arguments (given 2, expected 1)
Соответствующий код:
# models/event.rb
class Event < ApplicationRecord
belongs_to :venue
belongs_to :performer
filterrific(
default_filter_params: { sorted_by: 'created_at_desc' },
available_filters: [
:sorted_by,
:search_query,
:with_venue_id,
:with_performer_id,
:with_year_and_month
]
)
scope :with_year_and_month, lambda { |reference|
where(date: reference..reference.next_month)
}
def self.options_for_select
order('LOWER(name)').map { |e| [e.date.strftime("%Y-%m-%d"), e.date.strftime("%Y-%m-1")] }
end
end
# controllers/events_controller.rb
class EventsController < ApplicationController
def index
@filterrific = initialize_filterrific(
Event,
params[:filterrific],
select_options: {
sorted_by: Event.options_for_sorted_by,
with_venue_id: Venue.options_for_select,
with_performer_id: Performer.options_for_select,
with_year_and_month: Event.options_for_select
}
) or return
@events = @filterrific.find.page(params[:page])
respond_to do |format|
format.html
format.js
end
end
end
Я в замешательстве, потому что работает один и тот же формат в моей модели места проведения, и оба они, похоже, передают одинаковое количество аргументов:
# models/venue.rb
class Venue < ApplicationRecord
has_many :events
def self.options_for_select
order('LOWER(name)').map { |e| [e.name, e.id] }
end
end
Комментарии:
1. Вы должны опубликовать полную трассировку стека ошибок.
2. @dinesh Извините, я несколько новичок в этом, можете ли вы объяснить, где я это найду?