Переопределение конструктора, вероятно, плохая идея (как вы уже нашли).Вы должны использовать before_filter
:
class ProductsController < ApplicationController
before_filter :set_defaults
...
private
def set_defaults
@sort_by = :shop_brand
end
end
Однако, похоже, вы хотите сохранить состояние.Самый простой - сохранить в сеансе пользователя, который будет автоматически сохраняться для каждого пользователя до тех пор, пока он не закроет браузер:
def set_defaults
session[:sort_by] ||= :shop_brand
end
Другой вариант - передать текущее значение sort_by в URL.Это сложнее реализовать, хотя вам нужно будет убедиться, что каждая ссылка или форма копирует значение в следующий запрос.Преимущество этого, однако, заключается в том, что пользователь может иметь несколько открытых вкладок с разными порядками, и любая ссылка с закладкой восстановит тот же порядок в следующий раз.Это подход, который будут использовать такие вещи, как поисковые системы.