Rails Form_Tag远程调用成功但没有jquery回调

时间:2013-05-25 22:14:37

标签: ruby-on-rails jquery

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

= 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 and jquery catching success and failure of ajax requests,但没有成功。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您可以使用JavaScript代替,而不是将JSON返回给浏览器:

def search
    #irrelevant code
    @stripped_events = ...

    respond_to do |format|
        format.js
    end
end

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

console.log("WIN");
<% for stripped_event in @stripped_events %>
// use JavaScript / jQuery to manipulate the DOM
<% end %>