在下拉框中定义的值上过滤索引页的值。栏3

时间:2011-12-08 07:07:28

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

我是rails的新手,我正在尝试通过索引页面上的下拉框选择的值来浏览我的索引页面 对于例如。在我的索引页面中,如果用户从下拉列表中选择一个值,则我有一个显示员工姓名的下拉框,索引页面的值应该使用该员工名称进行过滤。 注 - Te Employee名称是交叉引用字段

我的控制器看起来像

def index

  @complaints = Complaint.paginate(:page => params[:page], :per_page => 10)

  respond_to do |format|
    format.html # index.html.erb
    format.json { render :json => @complaints }
  end
end

我的索引视图看起来像

<%= select("employee", "employee_id", Employee.all.collect {|p| [ p.fullname, p.id ] }, { :include_blank => true }) %>

1 个答案:

答案 0 :(得分:0)

我试图用我能从你的问题中理解的任何方式回答 我很想你不希望通过ajax调用进行过滤,你的投诉表包含一个名为employee_id的列。

在index_view中添加

<%= form_tag 'controllers_index_path' , :method => "get", :id=> 'filter_employees_form' do %>
<p>
  <%= select_tag 'employee_id', options_for_select(Employee.all.collect {|p| [p.fullname, p.id ] }, :selected => params[:employee_id]), :prompt => 'Select', :id => 'filter_employees' %>
</p>
<% end %>

在javascript文件中添加以下代码,或将其添加到索引页的末尾。

$(document).ready(function(){
  $('#filter_employees').change(function(){
    $('#filter_employees_form').submit();
  })
})

在controller.rb

def index

  @complaints = Complaint.get_complaints(params).paginate(:page => params[:page], :per_page => 10)

  respond_to do |format|
    format.html # index.html.erb
    format.json { render :json => @complaints }
  end
end

在complaint.rb(模特)

def self.get_complaints(params)
  conditions = ['']
  conditions = ['complaints.employee_id = ?', params[:employee_id]] if params[:employee_id]
  self.where(conditions)
end

希望这就是你要找的东西。