将JavaScript变量传递给Rails控制器

将JavaScript变量传递给Rails控制器,javascript,ruby-on-rails,parameter-passing,Javascript,Ruby On Rails,Parameter Passing,我使用的是rails版本3.2.6,我试图将一个Javascript变量传递给另一个页面Test10。我在视图中有以下代码: <script> var message = "hello world!"; </script> <%= link_to "Go!", Test10_path(), :with => "'message='+ message" %> 这是将Javascript变量传递给rails控制器的正确方法吗?它不起作用。如果有人给我指

我使用的是rails版本3.2.6,我试图将一个Javascript变量传递给另一个页面Test10。我在视图中有以下代码:

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

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

这是将Javascript变量传递给rails控制器的正确方法吗?它不起作用。如果有人给我指点,我将不胜感激。谢谢

你不能这么做。JavaScript和Ruby代码在完全不同的上下文中执行,JavaScript在客户端,Ruby在服务器上

通常,如果希望将值从客户机传递到服务器,则需要以表单形式或作为查询字符串的一部分或通过AJAX进行传递

在您的特定示例中,您必须编写一些JavaScript来选择锚定标记并将消息变量的内容附加到锚定标记的查询字符串中。如下所示:

<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>

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

通常,如果希望将值从客户机传递到服务器,则需要以表单形式或作为查询字符串的一部分或通过AJAX进行传递

在您的特定示例中,您必须编写一些JavaScript来选择锚定标记并将消息变量的内容附加到锚定标记的查询字符串中。如下所示:

<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>
这样的办法应该行得通。虽然大多数情况下,最好使用表单来传递参数


这样的办法应该行得通。尽管大多数情况下,最好使用表单传递参数…

谢谢@Anthony。成功了!了解使用表单传递参数的最佳资源是什么?为什么会更好?再次感谢!!如果您想从Javascript传递值,只需学习一点jQuery。您还必须学习如何使用rails构建表单:我们仔细阅读了代码并想提到的是,它只是通过URL字符串提交GET请求。URL字符串在下一页上清晰可见。更关心安全性的用户应该去别处看看+无论如何,这是一个明显成功的解决方案。在2016年,我的服务仍然很好。谢谢谢谢@Anthony。成功了!了解使用表单传递参数的最佳资源是什么?为什么会更好?再次感谢!!如果您想从Javascript传递值,只需学习一点jQuery。您还必须学习如何使用rails构建表单:我们仔细阅读了代码并想提到的是,它只是通过URL字符串提交GET请求。URL字符串在下一页上清晰可见。更关心安全性的用户应该去别处看看+无论如何,这是一个明显成功的解决方案。在2016年,我的服务仍然很好。谢谢谢谢@meagar的帮助!谢谢@meagar的帮助!
<%= 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>