Rails Ajax/控制器未正确更新我的部分



>我正在通过一个教程来获取一个轨道部分以使用 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

阿贾克斯 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。

您可能需要检查 https://guides.rubyonrails.org/layouts_and_rendering.html#partial-layouts 。您应该尝试删除"部分"或添加"局部"或"对象"到渲染方法。

以下所有呈现调用都将在视图/书籍目录中呈现 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' }

而不是使用

$('#results").html("<%=j (render 'users/result.html')%>")

你试过使用

document.querySelector('#results').innerHTML = '<%= j render 'users/result.html' %>'

这对我来说很好用。

相关内容

  • 没有找到相关文章

最新更新