我正在研究一个教程,以获取部分Rails来使用Ajax显示股票信息。一切正常,在控制台中,我可以看到div已正确更新,但未显示。这是相关的代码。
控制器
class StocksController < ApplicationController
def search
if params[:stock].present?
@stock = Stock.new_from_lookup(params[:stock])
if @stock
puts "should be working"
respond_to do |format|
format.js { render partial: 'users/result' }
end
else
puts "incorrect symbol"
flash[:danger] = "You have entered an incorrect symbol."
redirect_to my_portfolio_path
end
else
puts "nothing"
flash[:danger] = "You need to type something, what did you expect to happen?"
redirect_to my_portfolio_path
end
end
end
AJAX JS ERB
$('#results").html("<%=j (render 'users/result.html')%>")
部分结果是
<%if @stock%>
<div class = "well results-block">
<strong>Symbol:</strong><%= @stock.ticker%>
<strong>Name:</strong><%= @stock.name%>
<strong>Last Price:</strong><%= @stock.last_price%>
</div>
<%end%>
让我知道您是否需要更多信息。我正在使用Rails 6。
答案 0 :(得分:0)
您可能要检查https://guides.rubyonrails.org/layouts_and_rendering.html#partial-layouts。您应该尝试删除“ partial”或添加“ locals”或“ object”以呈现方法。
以下所有渲染调用都将在views / books目录中渲染edit.html.erb模板:
render :edit
render action: :edit
render "edit"
render action: "edit"
render "books/edit"
render template: "books/edit"
您可以通过:object选项将一个对象传递给此局部变量:
<%= render partial: "customer", object: @new_customer %>
就您而言,
format.js { render 'users/result' }
答案 1 :(得分:0)
代替使用
$('#results").html("<%=j (render 'users/result.html')%>")
您尝试使用
document.querySelector('#results').innerHTML = '<%= j render 'users/result.html' %>'
这对我来说很好。