【问题标题】:Adding javascript values into Ruby Hash [duplicate]将javascript值添加到Ruby Hash中[重复]
【发布时间】:2018-01-20 05:53:33
【问题描述】:

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

<script type="text/javascript">

    function change_value(val){

      alert ("<%= @alert %>")   
      }
    }
</script>

这将发送一个警报,其中包含存储在控制器中警报变量中的数据。

但我不知道它是如何反向工作的,例如,如果我需要将元素 id 存储到控制器变量中:

<script type="text/javascript">

    function change_value(element){
      <% @element_id = *** element.id *** %>

      alert ("<%= @element_id %>")   
      }
    }
</script>

接下来才是真正的交易,由 *** 放弃的代码应该是所需的 javascript 值(@billeable_qts 是一个哈希):

<script type="text/javascript">

  function change_value(product){

    <% @billeable_qts[****product.id****] = ***document.getElementById('product.id').value****  %>
    <% @billeable_qts.each do |key, value| %>
       <% alert = "Key = " + key + ", value: " + value.to_s%>
       alert ("product: <%= alert %>")
    <% end %>


  }

</script>

【问题讨论】:

  • 你不能。 javascript 正在浏览器中运行。要将这些类型的更改发布回您的应用程序,您必须执行 AJAX 请求之类的操作,这反过来会返回您的其他内容以在页面中呈现。
  • 你昨天问过这个identical question

标签: javascript ruby-on-rails ruby


【解决方案1】:

正如每个人都建议的那样,你不能按照你想要的方式去做。

一种简单的解决方法是创建一个方法(或使用控制器中已有的方法),然后对该方法进行 ajax 调用。

例如,对第一个产品的更新方法进行ajax调用,并在params中传入要更新的变量:

     var value = document.getElementById('product.id').value   
     var id = 1

      $.ajax({
            url: '/products/' + id,
            type: 'POST',
            data: {
                product: {
                    value: value,
                }
            },
            success: function(result)   {
                location.reload();
            },
            error: function(err)    {
                console.log(err);
            }
        })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    • 2010-09-16
    • 2015-02-28
    • 2019-03-12
    相关资源
    最近更新 更多