我有一系列视频名称,我想从这个数组中获取一个随机视频名称。但是当我调用辅助方法来完成所有这些操作时,我每次都得到相同的随机数和随机视频。
我相信这是因为即使我试图多次“调用它”,辅助方法也只被调用一次,这只是被多次“调用”的方法的结果。
所以我在想的是找到一种方法将JavaScript变量发送到辅助方法,但我不知道(谷歌也不知道)如何做到最好。
为了简单起见,每次只是尝试获取一个新的随机数:
JS:
function randomNumber() {
alert("<%= random_number %>");
}
setTimeout(function(){
randomNumber();
}, 2000);
html.erb:
helper_method :random_number
def random_number
rand(0..10)
end
每次显示相同的随机数。
答案 0 :(得分:0)
<强>请强>
Rails适用于“请求”
由于Rails是服务器端,因此它可以使用这些请求“呈现”您在屏幕上看到的页面/视图。每个请求都是单独处理的,这意味着您必须传递服务器为您呈现正确视图所需的所有内容
您提到的问题是您正在尝试使用已经呈现的数据。当您向Rails发送HTTP请求时,会呈现“帮助器”视图,因此将反复使用相同的数据
客户端与服务器端
您遇到的问题来自client-side
(JS)和server-side
(Rails)之间的区别。区别在于您无法从JS访问Rails,除非您发送“请求”(可能通过ajax)
为了从客户端触发Rails,您必须发送请求。这可以通过浏览器点击或Ajax
完成您的问题
您正尝试在1&amp;之间加载一个随机数。 10来自Rails
,这可以完全由JS处理或者,您可以使用Ajax从Rails请求帮助程序,但这非常低效,因为它会向服务器发送不必要的请求