AJAX call не рендерит мои частичные рельсы 3

Я пытаюсь заставить вызов Ajax работать в рельсах, не совсем уверен, что я делаю не так

Так что в моем индексе есть форма, которая вызывает API, а затем возвращает результат в путь результатов. так что я хочу сделать, чтобы получить результаты, представленные на странице индекса

Что у меня есть

контроллер

def index

end

def results
 results = contact_search(params[:search])
 @results = results
end

Индекс

<div class="container">
 <div class="row">
  <div class="span6 offset3">
   <h2>Search for a contact</h2>
    <%= form_tag  results_path,  :method => "get", :remote => true do %>
    <%= text_field_tag 'search', nil, :placeholder => "Enter Email Address here...." %>
    <%= submit_tag 'Search' , :id => "submitForm" %>
   <% end %>
  </div>
 </div>
</div>

 <div class="container">
  <div class="row">
<div class="span6 offset3">
 <div class="cResults">

     </div>
    </div>
  </div>
 </div>

Частичное _contactResults.html.erb

<h1>The Results</h1>
 <%= @results["contactInfo"]["familyName"] %><br>
 <img src= <%= @results["photos"].first["url"] %> />

Index.js.erb

$('.cResults').html("<%= escape_javascript(render partial: 'contactResults') %>");

Я что-то пропустил?

1 ответ

Решение

Ваш файл javascript должен быть назван как действие, которое "вычисляет" результаты:

# in results.js.erb, not index.js.erb
$('.cResults').html("<%= escape_javascript(render partial: 'contactResults') %>");

Если вам нужно выполнить Javascript для действия контроллера, вы можете назвать файл как действие, с помощью .js.erb вместо общего .html.erb, Этот файл будет выполнен, когда контроллер получит запрос на это действие, интерпретируемый как JS.

Другие вопросы по тегам