0

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

预先感谢!:)

4

3 回答 3

1

你可以使用这样的东西,

 def new
  @user = User.new
   respond_to do |format|
    format.html { render text: "Error", status: 404 }
    format.js
   end
 end
于 2013-07-11T19:00:24.450 回答
0

ajax 调用肯定需要路由。但是,您可以发出 POST 请求而不是 GET 请求,这样用户就无法将其输入到他们的浏览器中。但是,从技术上讲,他们仍然可以使用 CURL 等客户端发出这样的请求。

于 2013-07-11T18:57:02.447 回答
0

您将需要定义路线。但您也可以为您的 AJAX 调用提供临时访问令牌以供使用:

http://railscasts.com/episodes/352-securing-an-api?view=asciicast

于 2013-07-11T19:02:01.927 回答