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.