我有一个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,但没有成功。
有什么建议吗?
答案 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 %>