gpt4 book ai didi

Javascript嵌入ruby渲染部分本地调用,如何传递变量的值

转载 作者:行者123 更新时间:2023-12-03 11:43:44 25 4
gpt4 key购买 nike

单击时,我调用一个 javascript,其中我已将单选按钮值捕获到 javascript 中的变量中。然后,我调用渲染部分,将此单选按钮变量传递为本地变量。
我收到错误:#<# 的未定义局部变量或方法“radio_button_value”。

这是我的 JavaScript 代码:

 <script>
function render_dir_partial() {
alert('in javascript.');
alert("you chose the option: " + $('form input[type=radio]:checked').val() );
radio_button_value = $('form input[type=radio]:checked').val();
alert ("radio_button_value: " + radio_button_value );
$('#dir_list').html('<%=j render :partial => "dir_list", :locals => { :dir_choice => radio_button_value } %>')
}
</script>

当我运行应用程序时,此警报显示根据单击的单选按钮分配的正确值:警报(“单选按钮值:”+单选按钮值);

如果我将一个值硬编码到代码中,而不是变量,则一切正常。您能帮我找出将 radio_button_value 的值传递给 dir_choice 的正确语法吗?

我做了很多研究,所有内容都显示了当变量来自模型定义的对象时如何读取值。

这是有效的硬编码字符串。

<script>
function render_dir_partial() {
alert('in javascript.');
alert("you chose the option: " + $('form input[type=radio]:checked').val() );
radio_button_value = $('form input[type=radio]:checked').val();
alert ("radio_button_value: " + radio_button_value );
$('#dir_list').html('<%=j render :partial => "dir_list", :locals => { :dir_choice => "watchfolder" } %>')
}
</script>

最佳答案

据推测,以下代码位于某个 html.erb 文件中:

<script>
function render_dir_partial() {
alert('in javascript.');
alert("you chose the option: " + $('form input[type=radio]:checked').val() );
radio_button_value = $('form input[type=radio]:checked').val();
alert ("radio_button_value: " + radio_button_value );
$('#dir_list').html('<%=j render :partial => "dir_list", :locals => { :dir_choice => radio_button_value } %>')
}
</script>

当您的浏览器请求包含该代码的 html.erb 文件时,将执行以下步骤:

  1. Rails 执行该文件中的 erb 代码,将文件转换为仅 html 和 javascript。
  2. 服务器将转换后的文件发送到您的浏览器。
  3. 您的浏览器会在适当的时间执行 JavaScript。

radio_button_value 变量直到第 3 步才创建,即当 js 函数 render_dir_partial() 执行时,这可能需要 10 年。然而,在步骤 #1 中,rails 必须将名为 radio_button_value 的变量的值分配给局部变量 dir_choice——现在!

但是即使你的 js 脚本看起来像这样:

<script>
var radio_button_value = "hello";

$('#dir_list').html('<%=j render :partial => "dir_list", :locals => { :dir_choice => radio_button_value } %>')
}
</script>

...您仍然会遇到相同的错误,因为:

  1. 在浏览器收到文件之前,js radio_button_value 变量仍然不会存在,但在服务器将页面发送到浏览器之前,rails 必须将 radio_button_value 变量的值分配给 dir_choice 变量。

  2. 真正的问题是:Ruby 代码甚至无法引用 js 代码中的变量,反之亦然。如果您的 ruby​​ 代码提到了一个名为 radio_button_value 的变量,那么当 ruby​​ 代码执行时,必须在 ruby​​ 代码中定义它。 Ruby 代码根本不知道 javascript 已经被发明了。而如果你在js代码中提到了一个名为radio_button_value的变量,那么当js代码执行时,它必须在js代码中定义。

关于Javascript嵌入ruby渲染部分本地调用,如何传递变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26147574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com