将javascript变量发送到rails帮助程序方法

将javascript变量发送到rails帮助程序方法,javascript,ruby-on-rails,helpermethods,Javascript,Ruby On Rails,Helpermethods,我有一个视频名称数组,我想从这个数组中随机获取一个视频名称。但当我调用一个助手方法来完成所有这些时,我得到的是相同的随机数,每次都是随机视频 我相信这是因为helper方法只被调用了一次,即使我试图多次“调用”,但该方法的结果被多次“调用” 所以我想的是找到一种将JavaScript变量发送到helper方法的方法,但我不知道(谷歌也不知道)如何最好地做到这一点 为了保持简单,只需每次尝试获取一个新的随机数: JS: 每次都显示相同的随机数。请求 Rails在“请求”上工作 因为Rails是服务

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

我相信这是因为helper方法只被调用了一次,即使我试图多次“调用”,但该方法的结果被多次“调用”

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

为了保持简单,只需每次尝试获取一个新的随机数:

JS:


每次都显示相同的随机数。

请求

Rails在“请求”上工作

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

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


客户端对服务器端

您看到的问题来自
客户端
(JS)和
服务器端
(Rails)之间的差异。不同之处在于,除非发送“请求”(可能是通过),否则无法从JS访问Rails

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


你的问题

您试图从Rails加载一个介于1和10之间的随机数

如果您使用


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

请共享您的助手方法代码。问题很可能就在那里,Ruby是一种服务器端语言。这意味着一旦信息发送到客户端,它将不会继续执行。这是有办法的。最值得注意的是AJAX。但在这个简单的例子中。您最好在JavaScript中创建一个随机数。问题是,我需要将随机数发送给helper方法,这样它就可以从名称数组中获取一个随机视频名称。正如@JustinWood所说,无法在脚本中将JavaScript变量传递给ruby代码。你必须发送一个ajax请求,你可以做一件事,调用一个js函数并传递当时的视频数,然后用这个数生成一个随机数,然后随请求发送这个随机数。就像目前我有20个视频一样,然后我将在20上使用
随机
功能,它会生成一个数字14,例如,然后我会将14发送给控制器并请求,然后我会做任何我想做的事情。:)
function randomNumber() {
    alert("<%= random_number %>");
}

setTimeout(function(){
    randomNumber();
}, 2000);
helper_method :random_number
def random_number
  rand(0..10)
end