【问题标题】:keep meta_search parameters for edit page?保留编辑页面的 meta_search 参数?
【发布时间】:2013-01-04 00:53:52
【问题描述】:

我正在使用 meta_search gem。对于带有搜索参数的管理项目索引页面,我有这样的 url。

admin/projects?utf8=✓&search%5Bid_equals%5D=&search%5Btitle_contains%5D=&search%5Bstage_in%5D=completed

然后用户选择一个项目,url就是这个

admin/projects/a--15/edit?page=1 

当用户更新此表单时,搜索参数将丢失。

我怎样才能保留这些参数。我的意思是 session 或 meta_search 有一些方法可以解决这个问题?

【问题讨论】:

    标签: ruby-on-rails session meta-search


    【解决方案1】:

    首先,为每个可能想要访问搜索参数的操作创建一个过滤器:

    ProjectsController < ApplicationController
      before_filter :save_searches 
    
      def save_searches
        @addons = ''
        [:page, :id_equals,:title_contains,:stage_in].each do |k|
          if params[k]
            pval = params[k].is_a?(Array) ? params[k].join(',') : params[k]
            @addons << k.to_s + "=" + pval + "&" 
          end
        end
        @addons.chop!
      end
    

    现在,当你的动作触发时,@addons 将被设置,然后你可以这样做:

    <%= link_to 'Edit' , edit_path(@project.id) + @addons.length > 0 ? "?" + @addons : '' %>
    

    也就是说,我敢打赌这在某种程度上是一种黑客行为,并且有一种更简洁的方法可以做到这一点。但这对我有用。

    :page 键使得如果您正在运行分页并使用 :page 参数跟踪当前页面,您的分页也应该被记住。

    另请注意,如果您在参数中获得一个数组(即使用 :multiple=>true 进行选择的结果),则会进行处理。

    【讨论】:

      猜你喜欢
      • 2013-02-15
      • 2015-10-03
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2021-09-19
      • 1970-01-01
      • 2014-07-24
      相关资源
      最近更新 更多