应用过滤器后,视图未更新[ruby rails filterrific]

时间:2016-09-28 00:53:42

标签: ruby-on-rails ruby ruby-on-rails-3 filterrific

我有一个简单的表格,显示所有用户及其属性ID,姓名,年龄,状态,位置。我想过滤年龄和状态。

Id name age status location
1  xz    22  single  ca
2  yy    23  married ma

我正在使用filterrific插件并能够显示列表和过滤器下拉列表。

我的user.rb

 filterrific(
    available_filters: [
      :with_status,
      :with_age
    ]
  )

  scope :with_age, lambda { |age|
    where(age: [*age])
  }

  scope :with_status, lambda { |status|
    where(status: [*status])
  }


  def self.options_for_select
    order('LOWER(status)').map { |e| [e.status] }.uniq
  end
  def self.options_for_select2
    order('LOWER(age)').map { |e| [e.age] }.uniq
  end

控制器索引看起来像

def index
    @filterrific = initialize_filterrific(
      User,
      params[:filterrific],
      select_options: {
        with_status: User.options_for_select,
        with_clearance_batch_id: User.options_for_select2
      },
      default_filter_params: {},
      available_filters: [],
    ) or return

    @users = @filterrific.find
    respond_to do |format|
      format.html
      format.js
    end

  end

index.html.erb看起来像

<%= form_for_filterrific @filterrific do |f| %>

  <div>
    age
    <%= f.select(
      :with_age,
      @filterrific.select_options[:with_age],
      { include_blank: '- Any -' },
      {class: 'form-control' }
    ) %>
  </div>
  <div>
    status
    <%= f.select(
      :with_status,
      @filterrific.select_options[:with_status],
      { include_blank: '- Any -' },
    ) %>
  </div>

<% end %>

<%= render(
  partial: 'browse_users/list',
  locals: { users: @users }
) %>

当我进入该页面时,我能够看到所有用户。现在,当我过滤没有任何反应。我仍然看到所有用户。不确定发生了什么。我觉得我的范围过滤器没有得到应用。

1 个答案:

答案 0 :(得分:0)

对我来说这就是诀窍:

  • 在app / assets / javascripts / application.js中,我已经把这行&#34; // =需要turbolinks&#34;在&#34; // = require filterrific / filterrific-jquery&#34; (早些时候就在它之前)
  • 完成上述操作后,只有当我在浏览器中点击刷新时才会进行过滤或排序,而我没有找到解决方案,所以我宁愿添加一个表单提交按钮,如#34;禁用AJAX自动表单提交&#34;在文档中(http://filterrific.clearcove.ca/pages/action_view_api.html)。这样您仍然可以单击按钮或按Enter键,但至少过滤/排序有效。

还有一件事:当我想根据另一个表中的字段(遵循belongs_to外键关系)进行排序时,我也遇到了问题。如果我在github(https://github.com/jhund/filterrific_demo/blob/master/app/models/student.rb)中的示例应用程序的源代码中提到它:

&#34; order(&#34; LOWER(countries.name)#{direction}&#34;)。includes(:country)&#34;

我遇到了SQL错误。当我把它改成类似

的东西时

&#34;加入(:country).order(&#34; LOWER(countries.name)#{direction}&#34;)&#34;

它解决了这个问题。