簡體   English   中英

將javascript變量發送到rails?

[英]Send javascript variables to rails?

我需要將一個javascript變量播種到控制器。 例如,如果視圖中的代碼如下 -

    ...  <script type="text/javascript">
           variable_test = 'hello'
         </script> 
    ...

我需要控制器來獲取variable_test,如 -

 def hello
 @variable_test = #Some code
 # @variable_test => 'hello'
 end

這個視圖當然是你好,而且“一些代碼”是我不知道該怎么做的。

您不能將客戶端代碼發送到控制器,除非您執行某種類型的獲取或發布。 嘗試使用jQuery的post或get方法。 如果您不使用jQuery,那么您可以執行以下操作:

var variable_test = 'hello';
var el = document.createElement('script');
el.setAttribute('src', 'path_to_controller' + '?variable_test=' + variable_test);
document.body.appendChild(el);

然后在你的控制器中你會做:

@varliable_test = params[:varliable_test]

語法可能有點偏,但你會得到一般的想法。

首先,你需要以某種方式調用控制器。 數據是在表單中,您提交表單,或者您從JavaScript進行AJAX調用。 在第一種情況下,您希望使用javascript向表單添加隱藏的輸入,其中包含您想要的名稱和值。 在第二種情況下,使用AJAX請求發送的數據需要包含所需的名稱 - 值對。 如果不了解你正在做的事情,我就無法更具體; 你在提交表格或使用AJAX嗎?如果你正在使用AJAX,你使用的是javascript庫,或者使用任何內置的Rails助手進行ajax(例如remote_function)。

但是,無論哪種方式,您希望最終得到包含名稱 - 值對“varliable_test = hello”的請求。 然后你就做了

@varliable_test = params[:varliable_test]

訪問控制器中的值。

(我還要注意,大概你的意思是“變量”,而不是“變量”,但顯然只要你保持一致,它就不會影響功能。)

我也在尋找這個問題的答案。 在我的某個應用中,我需要從Google的地方自動填充中獲取數據。 這種方法對我來說看起來是一個完美的解決方案(歸功於Thaha kp: 如何在js視圖中將javascript變量傳遞給erb代碼?

視圖:

<script type="text/javascript">
  var variable_test = 'hello';
  $(document).ready(function() {
    $('#model_variable_test').val(variable_test);
  });
</script>

...

<%= form_for :model do |f| %>
  ...
  <%= f.hidden_field :variable_test %>
  ...
<% end %>

控制器:

def hello
  @variable_test = params[:model][:variable_test]
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM