2011-12-08 39 views
3

我是一個帶有rails的新手,我試圖在我的索引頁上選擇索引頁上的下拉框選擇的值 例如,在我的索引頁面我有一個顯示員工姓名的下拉框,如果用戶從下拉列表中選擇一個值,索引頁面的值應該用該員工姓名進行過濾。 注意 - 特員工的名字是一個交叉引用場在下拉框中定義的值上過濾索引頁的值。3

我的控制器看起來像

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

我試圖回答與我可以從你的問題和明白我假裝你不想通過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 

希望這是你在找什麼。