AJAX的问题不是使用参数渲染部分 - 而不是显示

时间:2013-12-08 00:12:26

标签: javascript jquery ruby-on-rails ajax partial-views

我认为这是一个基本问题,但我无法渲染之前呈现过的部分内容。这是我目前正在看的内容,我为这样一个基本问题道歉: 我的Ajax请求:

  $.ajax({
              url: "/result/"+choice1+"/"+choice2+"/"+choice3,
              type: "GET",
              dataType: "script",
              data: { choice1: choice1,
                      choice2: choice2,
                      choice3: choice3 }

            })

在触发时起作用:由WelcomeController#algorthim作为JS处理,具有正确的参数。 然后它进入那条路线,

 respond_to do |format|
    @result=result(@data,d, a)
    format.js {} 
end

转到algorthim.js.erb 这个文件是

(".output").append("<%= j render(:partial=> 'ranks', :locals=> { result: @result }) %>");

然后生成此部分:

<%= @result.inspect%>
<br>
<br>
<br>
<p> test </p>

应该在这里输出:

<div class='output'>
                <p>Results:</p>
                <%= render "ranks" %>
            </div>

并且正如控制台所见: 呈现welcome / _ranks.html.erb(0.4ms)   呈现welcome / algorthim.js.erb(1.8ms)

但我得到了这个:

<div class='output'>
                <p>Results:</p>
                nil
<br>
<br>
<br>
<p> test </p>
            </div>

我也尝试过format.js {@ result = @ result}和format.js {render(:partial =&gt;'ranking',:locals =&gt; {result:@result})}但没有运气。

我想知道是否有人可以帮助我!:)

谢谢你,我再次为新手问题道歉。

@data是:

[#<Event id: 2563, name: "Go from Introvert to Extrovert by Socializing with ...", price: "Free", location: "1 Dundas St E", category: "Comedy/Hang Out", feeling: "None", time: "07:00 PM", created_at: "2013-12-07 04:12:26", updated_at: "2013-12-07 04:12:26", latitude: 43.3124212, longitude: -79.91762829999999>, #<Event id: 2690, name: "Yuk Yuk's", price: "Price not listed", location: "224 Richmond Street West, Toronto, ON, Canada", category: "Comedy", feeling: "None", time: "Time not listed", created_at: "2013-12-07 04:12:56", updated_at: "2013-12-07 04:17:34", latitude: 43.6498097, longitude: -79.3883142>]

d是:[“43.6426,79.3871”] a是:“喜剧”

2 个答案:

答案 0 :(得分:1)

如参数名称所示,

(".output").append("<%= j render(:partial=> 'ranks', :locals=> { result: @result }) %>")

会将 locals 传递给您的部分内容。而不是

<%= @result.inspect%>
你应该

<%= result.inspect%>

答案 1 :(得分:0)

答案显然是错误的。 on(“.output”)。append(“&lt;%= j render(:partial =&gt;'ranking',:locals =&gt; {result:@result})%&gt;”)我忘了$,这导致结果永远不会显示!唉,简单的错误。