将javascript变量发送到rails helper方法

时间:2013-12-25 19:22:49

标签: javascript ruby-on-rails helpermethods

我有一系列视频名称,我想从这个数组中获取一个随机视频名称。但是当我调用辅助方法来完成所有这些操作时,我每次都得到相同的随机数和随机视频。

我相信这是因为即使我试图多次“调用它”,辅助方法也只被调用一次,这只是被多次“调用”的方法的结果。

所以我在想的是找到一种方法将JavaScript变量发送到辅助方法,但我不知道(谷歌也不知道)如何做到最好。

为了简单起见,每次只是尝试获取一个新的随机数:

JS:

function randomNumber() {
    alert("<%= random_number %>");
}

setTimeout(function(){
    randomNumber();
}, 2000);

html.erb:

helper_method :random_number
def random_number
  rand(0..10)
end

每次显示相同的随机数。

1 个答案:

答案 0 :(得分:0)

<强>请

Rails适用于“请求”

由于Rails是服务器端,因此它可以使用这些请求“呈现”您在屏幕上看到的页面/视图。每个请求都是单独处理的,这意味着您必须传递服务器为您呈现正确视图所需的所有内容

您提到的问题是您正在尝试使用已经呈现的数据。当您向Rails发送HTTP请求时,会呈现“帮助器”视图,因此将反复使用相同的数据


客户端与服务器端

您遇到的问题来自client-side(JS)和server-side(Rails)之间的区别。区别在于您无法从JS访问Rails,除非您发送“请求”(可能通过ajax

为了从客户端触发Rails,您必须发送请求。这可以通过浏览器点击或Ajax

完成

您的问题

您正尝试在1&amp;之间加载一个随机数。 10来自Rails

如果您使用right functions / code

,这可以完全由JS处理

或者,您可以使用Ajax从Rails请求帮助程序,但这非常低效,因为它会向服务器发送不必要的请求