2017-08-04 22 views
-4

我試圖在我的rails控制器中執行原始SQL查詢。我測試了一個數據庫程序的查詢,它的工作原理。在Rails控制器中編寫SQL Server查詢

這裏是我的控制器(sites_controller.rb):

class SitesController < ApplicationController 
    def index 
    @sites = SELECT * FROM "AM-Martin".dbo.CpCore_Site WHERE "Number" LIKE 'LA%' OR "Number" LIKE 'LC%' 
    @hash = Gmaps4rails.build_markers(@sites) do |site, marker| 
     marker.lat site.latitude 
     marker.lng site.longitude 
    end 
    end 
end 

我不斷收到此長的錯誤信息,即它不喜歡我寫的方式。

任何人都可以幫助指導我嗎?

UPDATE

我的控制器已更改爲:

class SitesController < ApplicationController 
    def index 
     query = "SELECT * FROM dbo.CpCore_Site WHERE 'Number' LIKE 'LA%' OR 'Number' LIKE 'LC%'" 
     @sites = ActiveRecord::Base.connection.execute(query) 

     @hash = Gmaps4rails.build_markers(@sites) do |site, marker| 
     marker.lat site.latitude 
     marker.lng site.longitude 

    end 
    end 
end 

但現在我正在一個錯誤它說的site.latitude部分:

未定義的方法`緯度'for 0:Fixnum

緯度是我試圖提取的數據庫表中的一列。

+2

什麼是錯誤? – Pavan

+0

未定義的方法'緯度'爲0:Fixnum它顯然意味着變量'site'包含Integer值。 –

回答

1

在rails中,你不能像這樣激發查詢。你可以像這樣

query = "SELECT * FROM "AM-Martin".dbo.CpCore_Site WHERE "Number" LIKE 'LA%' OR "Number" LIKE 'LC%" 
@sites = ActiveRecord::Base.connection.execute(query) 

或者

@sites = Model.where("Number LIKE 'LA%' OR Number LIKE 'LC%'") 

希望這會幫助你。