簡體   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