У меня был индексный метод, который выглядел, ужасно, как это:Rails: коллекция на основе Params
def index
if params[:brand]
@users = User.includes(:brand).where(brand_id: params[:brand]).order("#{sort_column} #{sort_direction}").page(params[:page]).per(10)
elsif params[:search]
@user = User.includes(:brand).find_by_client_code(params[:search])
redirect_to edit_user_path(@user)
elsif params[:page] == 'all'
@users = User.includes(:brand).order("#{sort_column} #{sort_direction}").all
elsif params[:state]
@users = User.includes(:brand).where(state: params[:state]).page(params[:page]).per(10)
else
@users = User.includes(:brand).order("#{sort_column} #{sort_direction}").page(params[:page]).per(10)
end
end
Довольно грязный, я знаю, но это сработало. Теперь я пытаюсь реорганизовать его, и я не могу найти лучший способ разделить его на более мелкие коллекции, не усложняя мои маршруты.
def index
[:brand, :page, :search, :state].each do |param|
if params[:page] == 'all'
@users = User.includes(:brand).order(column + ' ' + direction)
elsif params.key?(param)
param
else
@users = User.includes(:brand).order(column + ' ' + direction)
.page(params[:page]).per(10)
end
end
end
def brand
@users = User.includes(:brand).where('brand_id in (?)', params[:brand])
.order(column + ' ' + direction).page(params[:page]).per(10)
end
def state
@users = User.includes(:brand).where(state: params[:state])
.page(params[:page]).per(10)
end
def search
@user = User.includes(:brand).find_by_client_code(params[:search])
redirect_to edit_user_path(@user)
end
Вышеупомянутое не работает, но вы получаете эту идею. Кто-нибудь знает хороший способ справиться с этим типом ситуации? Приветствия.
Я просто прошел тот же путь обучения. Я использовал все мои запросы AJAX в действии шаблона, но теперь я помещаю их в свои собственные методы. Я не мог найти много рекомендаций в Интернете по этой теме tbh.Я надеюсь, что кто-то более опытный будет прослушивать, но я отделил большинство запросов AJAX от своих собственных действий и маршрутов и доволен результатами. Логику легче следовать, и мои действия не загромождают. Мой файл маршрутов более заполнен, но с надлежащей организацией он по-прежнему выглядит чистым. Хороший вопрос! – Steve
Какую версию рубина вы используете? – Surya
Я использую Ruby '2.1.2'. –