Пытаясь сделать автозавершение в рельсах, я получаю активную запись oci error

То, что я пытаюсь сделать, это в основном иметь автозаполнение для текстового поля... JS работает правильно, но я продолжаю сталкиваться с той же ошибкой с активной записью и оракулом ruby-oci8. Любая помощь будет принята с благодарностью.

Это ошибка

ActiveRecord::StatementInvalid (OCIError: ORA-00904: "'SNOWJ'": invalid ide ntifier: SELECT "EMPLOYEE".* FROM "EMPLOYEE"  WHERE ( emp_id like "'SNOWJ'" )):
app/controllers/user_controller.rb:7:in `emp_id_autocomplete'

Это моя визуальная модель

class Visual < ActiveRecord::Base


establish_connection :vtest

self.table_name = 'employee'

belongs_to :user

scope :search_id, lambda {|id|
  where(%q{ emp_id like "?" }, id) 
}

end

Это моя модель пользователя

class User < ActiveRecord::Base

devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable

attr_accessible :emp_id, 

Это мой пользовательский контроллер

class UserController < ApplicationController


  def emp_id_autocomplete
    @query = params[:term]
    @json = Visual.search_id(@query).collect {|e| e.id}.uniq
    respond_to do |format|
      format.js  { render :json => @json.to_json, :layout => false }
    end
  end
end

Это мой взгляд

   <div class='row form-group'>
    <div class='col-xs-8 col-xs-offset-2 col-sm-6 col-sm-offset-3 col-md-4 col-md-offset-4 col-lg-2 col-lg-offset-5 text-right'>
      <%= f.text_field :emp_id, tabindex: 1, id: 'emp_id', autofocus: true, placeholder: t( 'login_label' ), class: 'form-control' %>
    </div>
  </div>

Это мои маршруты.

Rails.application.routes.draw do

# Routes for devise user authentication
devise_for :users, controllers: { sessions: 'sessions' }

 root to: 'entry#index'

 resources :entry do
 end

 resources :user do
   collection do
     get :emp_id_autocomplete
   end
 end

Это мой app.js

//= require jquery
//= require jquery_ujs
//= require jquery.ui.all
//= require best_in_place
//= require bootstrap
//= require jquery.ui.datepicker
//= require moment.js
//= require fullcalendar
//= require daterangepicker.js
//= require entry
//= require user


 $(function() {
                $("#emp_id").autocomplete({
                  source: "user/emp_id_autocomplete",
                  minLength: 3
                });
 });

Это мои таблицы. У таблицы пользователя есть emp_id, а визуальная модель называется таблицей сотрудников и имеет идентификатор. Я хочу, чтобы автозаполнение было выполнено, - это просматривает текстовое поле emp_id, а затем ищет в таблице сотрудников идентификатор, который соответствует или близок к совпадению, если это возможно...

Таблица пользовательских моделей

  create_table "users"
    t.string   "emp_id"
    t.datetime "created_at"
    t.datetime "updated_at"

Визуальная модель стола

 create_table "employee"
   t.string   "id"
   t.datetime "created_at"
   t.datetime "updated_at"

1 ответ

Решение

Я думаю, что у вас есть ошибка в кавычках, попробуйте заменить:

where(%q{ emp_id like "?" }, id) 

с

where("emp_id like ?", id) 
Другие вопросы по тегам