2013-11-23 55 views
1

我想使用ajax從我的控制器獲取信息。基本上我想知道數據庫中是否已經存在數據,因此我的控制器將返回true或false。 目前我只是想設置基本AJAX調用ajax從軌道控制器獲取數據

在我的js文件中我有以下ajax調用,你可以看到此刻我沒有真正做任何邏輯,因爲我的數據只是一個佔位符。後來,我將添加我想查詢

$.ajax({ 
    type: "GET", 
    url: "/locations/exists", 
    dataType: "JSON", 
    data: { 'locition_exist': loc_exit }, 
    success: function(data) { 
    console.log(data); 
    } 
}); 

在我的控制器的信息,我有

def exists 
    location_exists = true 
    respond_to do |format| 
     format.html 
     format.json {render json: location_exists } 
    end 
    end 

後面的值將進入一個方法,將查詢數據庫,並返回真/假模型。

在我的路線我有

resources :locations 
    get 'locations/exists', to: 'locations#exists' 

以下錯誤

The action 'show' could not be found for LocationsController 

我新的Rails和AJAX這個代碼的結果,我根據我讀到這裏不同的例子我的代碼,所以我可能只是在做一個愚蠢的noob錯誤。 非常感謝您的幫助

回答

6

當使用路線getmatch,您需要定義控制器的方法映射

get 'locations/value', to: 'locations#value' 

更新

您更新路由後看到了同樣的錯誤。造成此錯誤的原因有兩個:

  1. 您首先定義了resources :location。網址locations/exists本身與資源內的「顯示」方法相匹配,路線以'exists'作爲#show中的編號。

  2. 您沒有內LocationsController

定義show所以,路線將首先映射的URL locations#show:id'exists',然後點擊控制,發現#show不存在。

該解決方案的更新

當然,之後你就可以把get 'exists'...資源之前,但看起來醜陋。

由於'exists'不需要ID,它是一個集合的方法。所以你可以使用Routes內置的方式來做到這一點。

resources :locations do 
    collection do 
    get 'exists' 
    end 
end 

通過這個你所有的資源和'存在'可以生活。

+0

我已更新我的帖子中的代碼。這仍然導致相同的錯誤。 – Quantico

+0

謝謝您的詳細解答。我會閱讀更多關於收集更好地瞭解你的建議:) – Quantico

+1

@Quantico,我的榮幸:)你可以在這裏閱讀文檔:http: –