将JavaScript变量传递给Rails控制器

时间:2012-08-01 19:46:53

标签: 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"  %>

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

def Test10
  @hello = params[message]
end

这是将Javascript变量传递给我的rails控制器的正确方法吗?它不起作用。我很欣赏任何指针。谢谢!

2 个答案:

答案 0 :(得分:5)

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

这样的事情应该有效。虽然大多数时候,最好通过使用表格来传递params ...

答案 1 :(得分:0)

你不能这样做。 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>