0

我有一个 form_tag 对返回 json 的搜索方法进行 ajax 调用。

= form_tag '/search',:remote => true,id: 'form', method: :post do
  = hidden_field_tag '_method,', :put 
  .row.form_attributes
    = text_field_tag :location, nil, placeholder: "San Francisco, CA"
    = submit_tag "Search", :class=>"btn btn-primary"

这是我的控制器操作中的最后一条语句:

def search
  #irrelevant code 
  render json: stripped_events.to_json
end

我已经设置了以下侦听器,以便我可以获取返回的 json 并对其进行操作。

console.log("LOAD");
$('#form').bind('ajax:success', function(xhr, data, status){
  console.log("WIN");
  console.log(data);
});

我知道我的 javascript 正在加载,因为我看到控制台上打印了“LOAD”。我也尝试过讨论,rails3 rails.js 和 jquery 捕获成功和失败的 ajax 请求,但没有成功。

有什么建议吗?

4

1 回答 1

1

您可以使用 JavaScript 进行响应,而不是将 JSON 返回到浏览器:

def search
    #irrelevant code
    @stripped_events = ...

    respond_to do |format|
        format.js
    end
end

然后创建一个名为search.js.erbin的视图模板app/views/controller_name。该文件是 ERB 评估的 JavaScript,因此您可以在其中使用 Ruby,就像使用 HTML ERB 模板一样。此文件中的 JavaScript 将在浏览器的上下文中执行。

console.log("WIN");
<% for stripped_event in @stripped_events %>
// use JavaScript / jQuery to manipulate the DOM
<% end %>
于 2013-05-25T22:44:39.200 回答