2013-05-25 3 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 

А затем создать шаблон представления под названием search.js.erb в 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 %> 
Смежные вопросы