【问题标题】:Pass JavaScript variables to Rails controller将 JavaScript 变量传递给 Rails 控制器
【发布时间】:2012-08-01 19:46:53
【问题描述】:

我正在使用 rails 3.2.6 版,我正在尝试将 Javascript 变量传递到另一个页面“Test10”。我在视图中有以下代码:

<script>
var message = "hello world!";
</script>

<%= link_to "Go!", Test10_path(), :with => "'message='+ message"  %>

参数没有传递给Test10。我在 Test10 控制器中有以下内容:

def Test10
  @hello = params[message]
end

这是将 Javascript 变量传递给我的 rails 控制器的正确方法吗?它不工作。我会很感激任何指示。谢谢!

【问题讨论】:

    标签: javascript ruby-on-rails parameter-passing


    【解决方案1】:
    <%= link_to "Go!", Test10_path(), :id => "my_link"  %>
    
    
    <script>
        var message = 'test';
        var url = $('#my_link').attr('href') + '?message=' + message;
        $('#my_link').attr('href', url);
    </script>
    

    这样的事情应该可以工作。虽然大多数时候,最好使用表单来传递参数...

    【讨论】:

    • 谢谢@Anthony。那行得通!学习使用表单传递参数的最佳资源是什么?为什么它更好?再次感谢!!
    • 如果你想从 Javascript 中传递值,只需学习一点 jQuery。您还必须学习如何使用 rails 构建表单:guides.rubyonrails.org/form_helpers.html
    • 我们浏览了代码并想提一下,它只是通过 URL 字符串提交 GET 请求。 URL 字符串在下一页上清晰可见。更关心安全性的用户应该寻找其他地方。无论如何 +1 以获得明显成功的解决方案。
    • 在 16 年仍然很好地为我服务。谢谢!
    【解决方案2】:

    你不能这样做。 JavaScript 和 Ruby 代码在完全不同的环境中执行,JavaScript 在客户端,Ruby 在服务器端。

    一般来说,如果您想将值从客户端传送到服务器,您需要将其以表单或作为查询字符串的一部分发回,或者通过 AJAX。

    在您的具体示例中,您必须编写一些 JavaScript 来选择锚标记并将 message 变量的内容附加到锚标记的查询字符串。类似于以下内容:

    <script>
      var message = "hello world!";
    
      // Select your anchor tag
      var link = $('a#my-link');
    
      // Append your message to the link's href attribute
      link.attr('href', link.attr('href') + "?message=" + message);
    </script>
    

    【讨论】:

    • 感谢@meagar 的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多