【发布时间】:2013-12-25 19:22:48
【问题描述】:
我有一个视频名称数组,我想从这个数组中随机获取一个视频名称。但是当我调用一个辅助方法来完成这一切时,我每次都会得到相同的随机数和随机视频。
我相信这是因为即使我尝试多次“调用”辅助方法,它也只被调用一次,只是该方法的结果被多次“调用”。
所以我的想法是找到一种将 JavaScript 变量发送到辅助方法的方法,但我不知道(Google 也不知道)如何最好地做到这一点。
为了简单起见,每次都尝试获取一个新的随机数:
JS:
function randomNumber() {
alert("<%= random_number %>");
}
setTimeout(function(){
randomNumber();
}, 2000);
html.erb:
helper_method :random_number
def random_number
rand(0..10)
end
每次显示相同的随机数。
【问题讨论】:
-
请分享您的辅助方法代码。问题很可能就在那里。
-
Ruby 是一种服务器端语言。这意味着一旦将信息发送给客户端,它将不会继续执行。有办法解决这个问题。最值得注意的是,AJAX。在这个简单的情况下。在 JavaScript 中创建一个随机数可能会更好。
-
问题是,我需要将随机数发送给辅助方法,以便它可以从名称数组中获取随机视频名称。
-
正如@JustinWood 所说,无法将javascript 变量传递给脚本中的ruby 代码。您必须通过发送 ajax 请求来完成。
-
你可以做一件事,调用一个js函数并传递当时的视频数量,并使用该数字生成一个随机数,然后将这个随机数与请求一起发送。就像目前我有 20 个视频一样,然后我将在 20 上使用
random函数,它会生成一个数字 14,例如,我会将 14 与我的请求一起发送到控制器,然后我会做任何我想做的事情。 :)
标签: javascript ruby-on-rails helpermethods