2017-02-20 95 views
1

我想讓我的代碼簡單高效。我的代碼是這樣(在M​​ODEL)Ruby on Rails MySQL查詢混淆

class Employee < ApplicationRecord 
    mount_uploader :image, AvatarUploader 

    def self.search(search) 
     if search 
     where(('(name LIKE ? OR name = ?) AND (employee_type = "SE" OR employee_type = "OP")'), "%#{search}%", "") 
    else 
     unscoped 
    end 
    end 
end 

和我的控制器是這樣的:

class EmployeesController < ApplicationController 
    before_action :set_employee, only: [:show, :edit, :update, :destroy] 
    # GET /employees 
    # GET /employees.json 
    helper_method :sort_column, :sort_direction 

    def index 
    @employees = Employee.all 
    @employees = Employee.search(params[:employee_type]) 
    @employees = Employee.search(params[:search]).order(sort_column + " " + sort_direction).paginate(:per_page => 5, :page => params[:page]) 
    end 
end 
+0

@xdazz謝謝老兄! –

+0

它看起來像你在控制器@employees中騎你的變量3次 – MZaragoza

+0

@MZarogaza 啊我明白了。我只是RoR中的新成員:D –

回答

1

WOU可以通過在乘坐不會做這樣的事情

class EmployeesController < ApplicationController 
    before_action :set_employee, only: [:show, :edit, :update, :destroy] 
    # GET /employees 
    # GET /employees.json 
    helper_method :sort_column, :sort_direction 

    def index 
    if params[:employee_type].present? 
     @employees = Employee.search(params[:employee_type]) 
    elsif params[:search].present? 
     @employees = Employee.search(params[:search]).order(sort_column + " " + sort_direction).paginate(:per_page => 5, :page => params[:page]) 
    else 
     @employees = Employee.all 
    end 
    end 
end 

現在你開始你的變數

+0

謝謝@Mzaragoza!我不知道我們可以在控制器中放置條件語句:D謝謝! –

+0

@reynantedai​​tol我很高興幫助:) – MZaragoza