【问题标题】:Rails 4 - filter index via collection_select values in a form on index actionRails 4 - 通过索引操作表单中的 collection_select 值过滤索引
【发布时间】:2013-10-05 16:27:09
【问题描述】:
Record:
  belongs_to :user
  has_one :course
  has_one :client, through: :user
  has_one :group, through: :user

在记录的索引操作页面上,我想为客户、组和用户提供一个带有 collection_selects 的表单(该表单,我已经制作了相关的 collection_selects)......但我不知道如何制作表单提交按钮返回过滤后的索引页面。

我有范围设置,只是不知道如何从表单中调用它们。

带范围的记录模型:GitHub Link

_index_filter_form 部分视图:GitHub Link

记录控制器:GitHub Link

【问题讨论】:

    标签: ruby-on-rails forms scope ruby-on-rails-4 filtering


    【解决方案1】:

    最初我认为这是我的观点:

    <td><%= collection_select(:client_id, 0, Client.find(:all, :order => "name"), :id, :name, {}, {:class=>'form-control'}) %></td>
    <td><%= collection_select(:group_id, 0, Group.find(:all, :order => "name"), :id, :name, {}, {:class=>'form-control'}) %></td>
    <td><%= collection_select(:user_id, 0, User.find(:all, :order => "first_name, last_name"), :id, :full_name, {}, {:class=>'form-control'}) %></td>
    

    我回去看看我是如何传递参数的……并修改了上面的代码:

    <!-- collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {}) -->
    <td><%= collection_select(:client, :id, Client.find(:all, :order => "name"), :id, :name, {}, {:class=>'form-control'}) %></td>
    <td><%= collection_select(:group, :id, Group.find(:all, :order => "name"), :id, :name, {}, {:class=>'form-control'}) %></td>
    <td><%= collection_select(:user, :id, User.find(:all, :order => "first_name, last_name"), :id, :full_name, {:multiple => true, :size => 5}, {:class=>'form-control'}) %></td>
    

    现在我可以在表单提交后通过控制器上的 index 操作访问参数。

    def index
        @records = Record.all
        if params[:commit] == "Filter"
          @records.by_client(params[:client_id]).by_group(params[:group_id]).by_user(params[:user_id])
        end
    end
    

    其中 by_client、by_group 和 by_user 是位于记录模型中的命名范围。

    【讨论】:

      猜你喜欢
      • 2018-06-07
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      • 2018-10-29
      • 2018-12-24
      • 1970-01-01
      • 2012-02-02
      相关资源
      最近更新 更多