2013-05-25 31 views
0

我有一個form_tag做一個Ajax調用我的搜索方法,返回json。Rails的Form_Tag遠程調用成功,但沒有jQuery的回調

= 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

,而不是返回JSON的瀏覽器,你可以使用JavaScript,而不是迴應:

def search 
    #irrelevant code 
    @stripped_events = ... 

    respond_to do |format| 
     format.js 
    end 
end 

,然後創建一個在app/views/controller_name稱爲search.js.erb視圖模板。該文件是ERB評估的JavaScript文件,因此您可以像使用HTML ERB模板一樣在其中使用Ruby。該文件中的JavaScript將在瀏覽器的上下文中執行。

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