0
Record:
  belongs_to :user
  has_one :course
  has_one :client, through: :user
  has_one :group, through: :user

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

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

带范围的记录模型:GitHub 链接

_index_filter_form 部分视图:GitHub 链接

记录控制器:GitHub 链接

4

1 回答 1

0

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

<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 是位于记录模型中的命名范围。

于 2013-10-05T18:31:00.093 回答