我正在使用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控制器的正确方法吗?它不起作用。我很欣赏任何指针。谢谢!
答案 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>