2013-07-11 31 views
0

我有一個包含應該通過ajax調用動作(home#search)的窗體的視圖。該動作沒有路由,因爲我想通過在他們的瀏覽器中輸入url(例如「www.example.com/home/search?q = blablabla」)來阻止人們進行查詢。該操作應限制爲來自Rails應用程序本身的ajax請求。如何使用ajax和rails調用沒有路由的動作

<%= form_tag("???", method: "get", remote: true) do %> 
    <%= label_tag(:q, "Type in location:") %> 
    <%= text_field_tag(:q) %> 
    <%= submit_tag("Search") %> 
<% end %> 

那麼如何通過ajax在沒有路徑的rails中調用動作呢?或者還有其他解決方案嗎?

提前致謝! :)

回答

0

一個ajax調用肯定需要一個路由。但是,您可以發出POST請求而不是GET請求,這樣用戶就無法將其輸入到瀏覽器中。但是,他們仍然可以在技術上使用CURL這樣的客戶來提出這樣的要求。

+0

謝謝您的回答!你是對的:實際上用戶直接輸入網址是最小的問題。那麼是否還有其他限制訪問路由的方式,以便只有Rails應用本身可以調用路由? – jagass

+0

並非如此,但取決於您的應用程序,可能還有其他解決方法,比如添加只有您的應用程序知道的api密鑰。 – Rebitzele

+0

該鍵在html表單中不可見嗎? – jagass

1

您可以使用這樣的事情,

def new 
    @user = User.new 
    respond_to do |format| 
    format.html { render text: "Error", status: 404 } 
    format.js 
    end 
end 
相關問題