Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.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
从ruby访问Javascript变量_Javascript_Ruby On Rails_Ruby - Fatal编程技术网

从ruby访问Javascript变量

从ruby访问Javascript变量,javascript,ruby-on-rails,ruby,Javascript,Ruby On Rails,Ruby,将数据从Ruby传递到Javascript很容易,例如: <script type="text/javascript"> function change_value(val){ alert ("<%= @alert %>") } } </script> 接下来是真正的交易,***提交的代码应该是所需的javascript值(@Billable_qts是散列): 功能更改\u值(产品){ 警报(“产品:”)

将数据从Ruby传递到Javascript很容易,例如:

<script type="text/javascript">

    function change_value(val){

      alert ("<%= @alert %>")   
      }
    }
</script>
接下来是真正的交易,***提交的代码应该是所需的javascript值(@Billable_qts是散列):


功能更改\u值(产品){
警报(“产品:”)
}

我假设您指的是一个具有类似js.erb扩展名的嵌入式Ruby文件

这些实例变量,如
@element_id
,用于生成javascript文件,然后运行客户端(即在浏览器中)

<> P> >这里指出的是,变量<代码> @ EntEngIDID/COD>只用于生成JavaScript文件,然后在创建JavaScript文件后,基本上可以认为它“消失”了。

这就是为什么可以将Ruby变量值“传递”到javascript文件中。但是,当运行客户端时,您不能将javascript获得的值传递回这些Ruby变量,因为它们基本上不再存在,因为它们的唯一目的是创建javascript文件

因此,用于生成该文件的控制器操作基本上达到了它的目的,并且它和它的变量等不再可用

现在,您似乎有一个javascript变量,即客户端获取的变量,您希望在将其发布到js警报之前对其进行操作

你有两个选择

1) 您可以使用纯javascript对其进行操作

<script type="text/javascript">

    function change_value(element){
      idToAlert = element.id;
      idToAlert++;
      alert (idToAlert);   
      }
    }
</script>

我希望这有帮助。很高兴提供任何补充说明。

我假设您指的是一个具有类似js.erb扩展名的嵌入式Ruby文件

这些实例变量,如
@element_id
,用于生成javascript文件,然后运行客户端(即在浏览器中)

<> P> >这里指出的是,变量<代码> @ EntEngIDID/COD>只用于生成JavaScript文件,然后在创建JavaScript文件后,基本上可以认为它“消失”了。

这就是为什么可以将Ruby变量值“传递”到javascript文件中。但是,当运行客户端时,您不能将javascript获得的值传递回这些Ruby变量,因为它们基本上不再存在,因为它们的唯一目的是创建javascript文件

因此,用于生成该文件的控制器操作基本上达到了它的目的,并且它和它的变量等不再可用

现在,您似乎有一个javascript变量,即客户端获取的变量,您希望在将其发布到js警报之前对其进行操作

你有两个选择

1) 您可以使用纯javascript对其进行操作

<script type="text/javascript">

    function change_value(element){
      idToAlert = element.id;
      idToAlert++;
      alert (idToAlert);   
      }
    }
</script>

我希望这有帮助。很高兴提供任何补充说明。

您打算如何处理控制器中的变量?如果您只想提醒该值,您可以使用纯javascript,并且它都是客户端
函数change_value(element){alert(element.id)}
如果您想在控制器中对其执行某些操作,例如向数据库添加某些内容,请发送电子邮件。您必须向该控制器操作发送一个请求,例如
函数change_value(element){doPostRequestTo('controller/change_value?value='+element.id)}
但是我不知道它是如何工作的,js可以向您的rails服务器发送一个包含您想要的任何信息的请求。这个主题叫做ajax。如何访问javascript“元素”的id属性——使用js代码,您可以使用元素的id检索页面上的任何元素。例如,如果您想在用户单击按钮后发回textfield的值,那么您的js代码可以将onclick hander函数附加到按钮上,该按钮使用(由rails插入的)@element_id检索textfield的值。Rails提供了检索的方法,但我发现它太复杂了,我自己只需要手工编写js。作为一名web开发人员,您必须了解很多不同的语言:html、js和jQuery,以及ruby和rails等服务器端语言。至少,我需要这样做,因为只有当用户添加元素ID和用户值时,我才尝试用元素ID和用户值填充哈希,一次可以输入许多值,我需要与这些值和标识符交互。谢谢您试图如何处理控制器中的变量?如果您只想提醒该值,您可以使用纯javascript,并且它都是客户端
函数change_value(element){alert(element.id)}
如果您想在控制器中对其执行某些操作,例如向数据库添加某些内容,请发送电子邮件。您必须向该控制器操作发送一个请求,例如
函数change_value(element){doPostRequestTo('controller/change_value?value='+element.id)}
但是我不知道它是如何工作的,js可以向您的rails服务器发送一个包含您想要的任何信息的请求。这个主题叫做ajax。如何访问javascript“元素”的id属性——使用js代码,您可以使用元素的id检索页面上的任何元素。例如,如果您想在用户单击按钮后发回textfield的值,那么您的js代码可以将onclick hander函数附加到按钮上,该按钮使用(由rails插入的)@element_id检索textfield的值。Rails提供了检索的方法,但我发现它太复杂了,我自己只需要手工编写js。作为一名web开发人员,您必须了解很多不同的语言:html、js和jQuery,以及ruby和rails等服务器端语言。至少,我需要这样做,因为只有当用户添加元素ID和用户值时,我才尝试用元素ID和用户值填充哈希,一次可以输入许多值,我需要与这些值和标识符交互。谢谢
<script type="text/javascript">

    function change_value(element){
      idToAlert = element.id;
      idToAlert++;
      alert (idToAlert);   
      }
    }
</script>
<script type="text/javascript">

function change_value(element){
$.ajax({
  url: "/controller/update_element_id",
  type: "POST",
  data: {"old_element_id": <%= @element_id %>, "new_element_id": element.id},
  success: function(response) {
    alert (response);
  },
  error: function(response) {
    console.log('error: ' + response);
  }
});
}
</script>
def update_element_id
  item = Model.where(element_id: params["old_element_id"]).first
  item.update_attributes(element_id: params["new_element_id"])
  render json: {element_id: item.element_id}
end