如何使用ajax和rails调用没有路由的动作

时间:2013-07-11 18:53:16

标签: ruby-on-rails ajax controller routes action

我有一个视图,其中包含一个应该通过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调用动作?或者还有其他解决方案吗?

提前感谢! :)

3 个答案:

答案 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