我是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 }) %>
答案 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
希望这就是你要找的东西。