Мне удалось создать серию из трех кнопок на странице индекса, позволяющую пользователю идентифицировать подмножество объектов в базе данных - кнопка 1 - тип = "новый", кнопка 2 - тип = "используется", кнопка3 - без ограничений, т.е. может быть новым или использованным.
В настоящее время index.html.erb содержит:
<%= link_to "New", :controller => params[:controller], :action => params[:action], :product_type => 'New' %>
<%= link_to "Used", :controller => params[:controller], :action => params[:action], :product_type => 'Used' %>
<%= link_to "Don't Restrict", :controller => params[:controller], :action => params[:action], :product_type => nil %>
В пределах product.rb у меня есть:
scope :by_product_type, lambda{|product_type| where(:product_type => product_type) unless product_type.nil? }
Наконец, у меня есть productfinder_controller:
before_filter :load_grips, :only => [:index, :bybrand, :bycolour, :byprice]
protected
def load_products
if params[:product_type]
@productssmatchingtype = Product.by_product_type(params[:product_type])
else
@productsmatchingtype = Product
end
end
Приведенный выше код работает точно так, как я и ожидал, загружая все элементы изначально и ограничивая их, если нажата кнопка 1 или кнопка 2.
Я также хотел быиметь аналогичную функциональность на 3 других страницах контроллера Productfinder, а именно byprice, bybrand и bycolour.Я поместил один и тот же код, как указано выше, в каждый из этих 3 других файлов .html.erb, и снова все выглядит так, как будто он ведет себя ...
ИСКЛЮЧИТЬ - при загрузке новой страницы по умолчанию всепродукты показаны, т.е. он не запомнил, какую кнопку пользователь нажал на предыдущей странице.Можно ли хранить информацию о нажатой кнопке, доступной для всех страниц контроллера?Аналогично или в качестве альтернативы, возможно ли определить @productsmatchingtype (в productfinder_controller) таким образом, чтобы он был доступен для всех страниц и ему не нужно было начинать заново с нуля?