ruby-on-rails – 如何记住控制器中页面之间的参数值
发布时间:2020-12-17 03:27:06 所属栏目:百科 来源:网络整理
导读:我已设法在索引页面上生成一系列三个按钮,使用户能够识别数据库中对象的子集 – 按钮1 – 类型=“新”,按钮2 – 类型=“已使用”,按钮3 – 否限制即可以是新的或使用的. 目前index.html.erb包含: %= link_to "New",:controller = params[:controller],:acti
我已设法在索引页面上生成一系列三个按钮,使用户能够识别数据库中对象的子集 – 按钮1 – 类型=“新”,按钮2 – 类型=“已使用”,按钮3 – 否限制即可以是新的或使用的.
目前index.html.erb包含: <%= link_to "New",:controller => params[:controller],:action => params[:action],:product_type => 'New' %> <%= link_to "Used",:product_type => 'Used' %> <%= link_to "Don't Restrict",: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时限制它们. 我还希望在Productfindercontroller中的其他3个页面上具有类似的功能,即byprice,bybrand和bycolour.我已经在上面提供的其他3个.html.erb文件中添加了与上面提供的相同的代码,并且事情似乎也在表现…… 除外 – 当加载新页面时,默认是显示所有产品,即它没有记住用户在上一页上按下的按钮.是否可以存储控制器中所有页面都可以访问的按钮信息?类似地/或者,是否可以以这样的方式定义@productsmatchingtype(在productfinder_controller中),使得所有页面都可以访问它并且不需要再次从头开始? 解决方法
你无法记住变量beetwen请求.但是,您可以在会话中存储product_type:
def load_products #get product_type from session if it is blank params[:product_type] ||= session[:product_type] #save product_type to session for future requests session[:product_type] = params[:product_type] if params[:product_type] @productssmatchingtype = Product.by_product_type(params[:product_type]) else @productsmatchingtype = Product end end 那应该做的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |