Rails Ajax / Controller无法正确更新我的部分

时间:2019-12-06 03:05:17

标签: javascript ruby-on-rails ajax ruby-on-rails-6

我正在研究一个教程,以获取部分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。

2 个答案:

答案 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' %>'

这对我来说很好。