Я пытаюсь сделать простой сайт, если хотите, трекер акций.Одной из функций является получение результатов с помощью ajax, поскольку, чтобы не загружать всю страницу, я могу зайти так далеко, чтобы получить html с данными, которые я хочу, в ответ, но не могу загрузить его на страницу.И когда я добавляю эквивалентный файл js.erb, я вообще не получаю ответ.
Вот эта страница: (my_portfolio.html.erb)
<h1> My Portfolio</h1>
<h3>Search for stocks</h3>
<div id="stock-lookup">
<%= form_tag search_stocks_path, remote: true, method: :get, id: "stock-lookup-form" do %>
<div class="form-group row no-padding center col-md-12">
<div class="col-md-10">
<%= text_field_tag :stock, params[:stock], placeholder: "Stock ticker symbol", autofocus: true,
class: "form-control search-box input-lg" %>
</div>
<div class="col-md-2">
<%= button_tag :submit, class: "btn btn-lg btn-success" do %>
<%= fa_icon "search" %> Look up a stock
<% end %>
</div>
</div>
<% end %>
</div>
<div id="results">
<%= render 'users/result' %>
</div>
вот часть, которая отображаетсявнизу: (_result.html.erb)
<% if @stock %>
<div class="well results-block">
<strong>Symbol: </strong><%= @stock.ticker %>
<strong>Name: </strong><%=@stock.name %>
<strong>Price: </strong><%= @stock.last_price %>
</div>
<% end %>
вот метод, который запускается при отправке формы (stocks_controller.rb):
class StocksController < ApplicationController
def search
if params[:stock].present?
@stock = Stock.new_from_lookup(params[:stock])
if @stock
respond_to do |format|
format.js { render partial: 'users/result' }
end
else
flash[:danger] = "You have entered an invalid symbol."
redirect_to my_portfolio_path
end
else
flash[:danger] = "You have input an unexistant stock."
redirect_to my_portfolio_path
end
end
end
вот моя проблема: когдаЯ отправляю правильные данные, проверяю ответ сервера в браузере и вижу текст ответа:
<div class="well results-block">
<strong>Symbol: </strong>GOOG
<strong>Name: </strong>Alphabet Inc.
<strong>Price: </strong>1042.1
</div>
Так что это означает, что я получаю данные обратно, однако пытаюсь поместить их встраница не работает, потому что когда я создаю соответствующий _result.js.erb
, запрос вообще ничего не возвращает и страница не заполнена данными, запрос возвращает только 200, когда нет файла js.erb.Вот код: (_result.js.erb)
$('#results').html("<%= j (render 'users/result') %>")
Я понятия не имею, что ошибка может быть.Кто-нибудь может пролить свет на это?
Редактировать: Утвержденный ответ работает, да, но я обнаружил, что вы также можете передать визуализацию для изменения содержимого страницы, и что $('#results').html("<%= j (render 'users/result') %>")
на самом деле пытается визуализировать страницу,в то время как реальное намерение состоит в том, чтобы просто получить html, для этого просто используйте вместо него $('#results').html("<%= j (render partial:'users/result.html.erb') %>")
.Тем не менее, часть html.erb
кажется строго необходимой, в отличие от других частей рельсов.Было бы замечательно, если бы кто-то мог указать, почему.