【问题标题】:Rails: App partial is not responding normally in production (Heroku)Rails:应用程序部分在生产中没有正常响应(Heroku)
【发布时间】:2016-04-24 04:04:47
【问题描述】:

我在生产中遇到问题,我的部分代码在 heroku 上没有按预期工作。

在我的网站上,我有一个测验,用户会收到一个带有答案的问题。在得到正确或错误的问题后,这会为用户呈现部分内容:

<%= link_to "Answer1", correct_answer_courses_path,:remote => true,:class=>"btn btn-warning"  %>

correct_answer.js.erb

$("#correct_answer").html("<%= j render partial: "beginnercourse/correct", locals: {questionnumber: @questionnumber, coursetitle: @coursetitle, routenumber: @routenumber} %>");

控制器

def beginnercourse_q1
  def correct_answer
    @questionnumber = 1
    @routenumber = @questionnumber + 1
    @coursetitle = "beginnerscourse"
    respond_to do |format|               
      format.js
    end        
  end 

  def false_answer
    @questionnumber = 1
    @routenumber = @questionnumber + 1
    @coursetitle = "beginnerscourse"
    respond_to do |format|               
      format.js
    end        
  end    
end

这将呈现部分,位于/beginnercourse/_correct.html.erb

   <div>
     <h2> Correct!</h2>

      <% if $current_course.send("claimedreward#{questionnumber}") == false%>
        <h2><span class = "yellowtext">Well Done, + 100 tradepoints</span></h2>
        <% current_user.update_attributes(tradepoints: (current_user.tradepoints + 100)) %>
        <% $current_course.update_attributes("claimedreward#{questionnumber}" => true) %>

        <%= link_to "Next", "/courses/#{coursetitle}_q#{routenumber}",class:"btn btn-warning" %>
        <%= render 'layouts/coursefooter' %>


      <% else %>
        <h2><span class = "redtext">Points were already rewarded</span></h2>  

        <%= link_to "Next", "/courses/#{coursetitle}_q#{routenumber}",class:"btn btn-warning" %>
        <%= render 'layouts/coursefooter' %>
      <% end %>
  </div>

在开发中这一切正常,但在 Heroku 上存在几个问题:

  • 单击下一步时,它会转到错误的问题(没有从控制器获得新的@routenumber?)。大约 30% 的时间(看起来很随机)
  • 说奖励已经给了,而实际上还没有。 (也是大约 1/5 次)

我的heroku日志。 (heroku 尝试将问题 4 加载 3 次而不是转到问题 5):https://gist.github.com/Mixelated/41e78b7fceae213541d95fad1d3c1908

我已经坚持了一段时间,似乎无法找出为什么它不能在 Heroku 上稳定运行。非常感谢您的帮助!

【问题讨论】:

  • 刚刚在$("#correct_answer").html("&lt;%= j render partial: "beginnercourse/correct", locals: {questionnumber: @questionnumber, coursetitle: @coursetitle, routenumber: @routenumber} %&gt;");发现错误,部分名称beginnercourse/correct应该用单引号而不是双引号括起来!
  • 谢谢,改了还是一样的问题
  • 可能是因为您使用的是实例变量而不是局部变量。即删除@符号。
  • @HieuPham 为什么要单引号?它在 下。在 erb 模板文件中。单引号或双引号无关紧要。
  • @M1xelated,我关心 $current_course 全局变量。我认为您错过了一些重要信息,例如呈现该链接的控制器和它的 route.rb。

标签: ruby-on-rails heroku production partials


【解决方案1】:

抱歉,如果我错了,但我可以看到您最初总是将 questionnumber 设置为 1,因此下一个总是会将您重定向到第二个问题。您是否可能需要将当前问题编号作为参数发送给控制器或以某种方式在请求中保留该值?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 1970-01-01
    相关资源
    最近更新 更多