1

会社とアクティブ/非アクティブのパラメーターに基づいてユーザーを検索するためにランサックを使用しています。これは個別に使用するとうまく機能しますが、両方を同時に使用したいと考えています。たとえば、最初に会社を選択してから、アクティブ/非アクティブなユーザーを選択すると、会社名が保持されます。

第二に、ランサックには、ユーザーを前後にクリックしたときに両方の値を保持する機能がありますか?

アップデート :

これは私の見解です:

= search_form_for @search, url: search_users_path, method: :post, html: { class: 'sort' } do |f|
  = f.label 'company:'
  = f.select :company_id_eq,
  Company.where('is_inactive = false').collect {|c| [ c.name, c.id ] },
  {:include_blank => 'All company users'}, :'data-remote' => true, class: 'searchSelect searchUserSelect'

  %div.sort_users
    = f.label 'sort Users:'
    = f.select :deleted_eq,
    [raw("<option value= 0 selected=#{session[:deleted]}>Active Users</option><option value= 1>Inactive Users</option>")],
    {}, :'data-remote' => true, class: 'searchSelect searchUserSelect', style: "width: 205px;"

これはコントローラーの私のコードです

@search = User.search(params[:q])
@users = @search.result.includes(:company).order("companies.name, last_name").page(params[:page]).per(20)
4

1 に答える 1

4

フィルターの永続性について、私は次のものを使用していbefore_action ますApplicationController

def get_query(cookie_key)
  cookies.delete(cookie_key) if params[:clear]
  cookies[cookie_key] = params[:q].to_json if params[:q]
  @query = params[:q].presence || JSON.load(cookies[cookie_key])
end

次に、Interventionモデルの場合、次のものがあります。

class InterventionsController < ApplicationController
  before_action only: [:index] do
    get_query('query_interventions')
  end

  def index
    @q = Intervention.search(@query)
    @interventions = @q.result
  end
end

そのようにして、パラメータinterventions_pathなしで呼び出された場合、最後に永続化されたクエリにアクセスするためにチェックされます。しかし、 paramを指定して が呼び出されると、この新しいクエリが使用され、後で使用できるように永続化されます。qcookies['query_interventions']interventions_pathq

また、パラメータでinterventions_path呼び出された場合clear、Cookie は削除されます。

CookieOverflow4k を超える文字が保存されている場合、例外が発生することに注意してください。ただし、これは1024 ~ 4096 文字の UTF-8 文字であり、通常は問題ありません。そうでない場合は、他の種類のセッション ストレージを使用する必要があります。

于 2014-08-05T15:07:40.683 に答える