[英]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.