我有一个视图,其中包含一个应该通过ajax调用动作(home #search)的表单。该操作没有路由,因为我想通过在浏览器中键入URL(例如“www.example.com/home/search?q=blablabla”)来阻止人们进行查询。该操作应仅限于来自rails应用程序本身的ajax请求。
<%= form_tag("???", method: "get", remote: true) do %>
<%= label_tag(:q, "Type in location:") %>
<%= text_field_tag(:q) %>
<%= submit_tag("Search") %>
<% end %>
那么如何通过没有路由的rails中的ajax调用动作?或者还有其他解决方案吗?
提前感谢! :)
答案 0 :(得分:1)
你可以使用这样的东西,
def new
@user = User.new
respond_to do |format|
format.html { render text: "Error", status: 404 }
format.js
end
end
答案 1 :(得分:0)
ajax调用肯定需要一条路线。但是,您可以发出POST请求而不是GET请求,这样用户就无法将其输入到浏览器中。但是,他们仍然可以使用CURL等客户端在技术上提出这样的请求。
答案 2 :(得分:0)
您需要定义路线。但您也可以为您的AJAX调用提供临时访问令牌:
http://railscasts.com/episodes/352-securing-an-api?view=asciicast