【发布时间】: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("<%= j render partial: "beginnercourse/correct", locals: {questionnumber: @questionnumber, coursetitle: @coursetitle, routenumber: @routenumber} %>");发现错误,部分名称beginnercourse/correct应该用单引号而不是双引号括起来! -
谢谢,改了还是一样的问题
-
可能是因为您使用的是实例变量而不是局部变量。即删除@符号。
-
@HieuPham 为什么要单引号?它在 下。在 erb 模板文件中。单引号或双引号无关紧要。
-
@M1xelated,我关心 $current_course 全局变量。我认为您错过了一些重要信息,例如呈现该链接的控制器和它的 route.rb。
标签: ruby-on-rails heroku production partials