繁体   English   中英

将JavaScript变量发送到Rails助手方法

[英]Send javascript variable to rails helper method

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

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

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

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

JS:

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

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

html.erb:

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

每次显示相同的随机数。

要求

Rails处理“请求”

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

您提到的问题是您尝试使用已经渲染的数据。 当您将HTTP请求发送到Rails时,呈现了“ helper”视图,因此将一遍又一遍地使用相同的数据


客户端与服务器端

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

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


你的问题

您正在尝试从Rails加载1到10之间的随机数

如果您使用正确的函数/代码,则可以完全由JS处理

另外,您可以使用Ajax向Rails请求帮助程序,但这效率很低,因为它将不必要的请求发送到服务器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM