2017-02-20 3 views
1

Я хотел бы сделать мой код очень простым и эффективным. Мой код выглядит следующим образом (в модели)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

@reynantedaitol Я рад помочь :) – MZaragoza