Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在提交时使用jquery将javascript变量发送到rails变量_Javascript_Jquery_Ruby On Rails_Ajax - Fatal编程技术网

在提交时使用jquery将javascript变量发送到rails变量

在提交时使用jquery将javascript变量发送到rails变量,javascript,jquery,ruby-on-rails,ajax,Javascript,Jquery,Ruby On Rails,Ajax,因此,我在html.erb视图上生成了这个javascript变量,我想将它发送到rails变量表单submit。我知道我可以使用jquery或ajax来实现这一点,但我的尝试失败了。以下是我正在尝试的: Rails变量: <%= f.text_field :antennatime, :id => "antenna_time" %> “天线时间”%> 一些HTML: <input type="checkbox" id="Antenna" onclick="fun();

因此,我在
html.erb
视图上生成了这个javascript变量,我想将它发送到rails变量表单submit。我知道我可以使用jquery或ajax来实现这一点,但我的尝试失败了。以下是我正在尝试的:

Rails变量:

<%= f.text_field :antennatime, :id => "antenna_time" %>
“天线时间”%>
一些HTML:

<input type="checkbox" id="Antenna" onclick="fun();" value="1"> 

我的javascript:

<script>
var str = "This is Some Sample Text";
var ant = document.getElementById("Antenna").checked;

if(antenna == true){
    $(document).ready(function(){
        $("antenna_time").val(str);
    });
}
</script>

var str=“这是一些示例文本”;
var ant=document.getElementById(“天线”)。已选中;
如果(天线==真){
$(文档).ready(函数(){
$(“天线时间”).val(str);
});
}

在我看来,这是行不通的。有人能告诉我使用jquery或ajax将javascript var
str
发送到rails变量
:antennatime
的步骤吗?

您需要比较
ant
变量而不是
antenna
,因为您已经在上面定义了
if
条件,并且使用
将目标元素与
id
named
antenna\u time

同时将所有代码包装在DOM ready中,最终代码如下所示:

$(document).ready(function(){
    var str = "This is Some Sample Text";
    var ant = document.getElementById("Antenna").checked;

    if(ant == true){
        $("#antenna_time").val(str);  
    } 
});

看起来您拼错了一个变量,并且错过了jQuery选择器中的一个
#

var str = "This is Some Sample Text";
var ant = document.getElementById("Antenna");

if (ant.checked){
    $(function(){ // same as $(document).ready()
        $('#antenna_time').val(str);
    });
}

为了清楚起见,如果使用
if
语句是为了检查表达式/求值-我会将您的
.checked
逻辑添加到那里,因为它更清楚发生了什么。

您的问题有点混乱。让我解释一下,以确保我理解:您有一个表单,其中一个字段由模型的属性填充,当设置复选框时,您希望使用javascript设置该字段的值

因此,实际上,您并没有设置一些“rails变量”,而是在将表单提交给服务器之前更改表单中的一个字段

因此,在这种情况下很简单,您只是在jquery中省略了
#
。所以你必须写作

$('#antenna_time').val(str)
这会将字段设置为请求的值。但根据您的代码,只有在加载页面并单击复选框时,它才会这样做

这可能是你想要的,但我怀疑你

  • 要在单击复选框时设置/取消设置它吗?(没有显示
    fun()
    函数——谈到神秘的名称)
  • 仅在提交前检查(可能会让用户感到困惑,为什么不检查服务器端复选框的值)
请注意,要设置rails变量,您必须向服务器发布一些内容


现在还不完全清楚为什么要覆盖字段的
id
,因为rails使用id/名称构建要发布到rails服务器的params散列,这可能会造成危险。模型中属性的输入字段的
id
总是按照如下方式构建:
\uu
,它是唯一的(且清晰),足以让我使用它。

为混淆道歉。在以后的问题中,我会尽量澄清。感谢您对
id
的输入。我会采纳你的建议。