Ruby on rails 如何使用ajax和rails调用没有路由的操作
我有一个视图,其中包含一个表单,该表单应该通过ajax调用一个操作(home#search)。该操作没有路由,因为我想通过在浏览器中键入url(例如“www.example.com/home/search?q=bla”)来防止人们进行查询。该操作应限于来自rails应用程序本身的ajax请求Ruby on rails 如何使用ajax和rails调用没有路由的操作,ruby-on-rails,ajax,controller,routes,action,Ruby On Rails,Ajax,Controller,Routes,Action,我有一个视图,其中包含一个表单,该表单应该通过ajax调用一个操作(home#search)。该操作没有路由,因为我想通过在浏览器中键入url(例如“www.example.com/home/search?q=bla”)来防止人们进行查询。该操作应限于来自rails应用程序本身的ajax请求 <%= form_tag("???", method: "get", remote: true) do %> <%= label_tag(:q, "Type in location:"
<%= form_tag("???", method: "get", remote: true) do %>
<%= label_tag(:q, "Type in location:") %>
<%= text_field_tag(:q) %>
<%= submit_tag("Search") %>
<% end %>
那么,在没有路由的rails中,如何通过ajax调用操作呢?或者有其他解决办法吗
提前感谢!:) ajax调用肯定需要路由。但是,您可以发出POST请求而不是GET请求,这样用户就无法将其输入到浏览器中。但是,从技术上讲,他们仍然可以使用CURL之类的客户端发出这样的请求。您可以使用这样的客户端
def new
@user = User.new
respond_to do |format|
format.html { render text: "Error", status: 404 }
format.js
end
end
您将需要定义一个路由。但您也可以为AJAX调用提供一个临时访问令牌:
谢谢您的回答!你说得对:实际上,用户直接键入url是最不重要的。那么,有没有其他方法来限制对路由的访问,以便只有rails应用程序本身可以调用路由?没有,但根据您的应用程序,可能还有其他解决方法,例如添加只有您的应用程序知道的api键。键在html表单中不可见吗?谢谢!所以我猜这是一个类似于雷比策尔的答案,但线索是使每个客户的关键临时,以避免滥用。。。