javascript
  • ruby-on-rails
  • parameter-passing
  • 2012-08-01 150 views 1 likes 
    1

    我正在使用rails版本3.2.6,并试图将JavaScript变量传递给另一个页面“Test10”。我在视图中有以下代码:将JavaScript变量传递给Rails控制器

    <script> 
    var message = "hello world!"; 
    </script> 
    
    <%= link_to "Go!", Test10_path(), :with => "'message='+ message" %> 
    

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

    def Test10 
        @hello = params[message] 
    end 
    

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

    回答

    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> 
    

    这样的事情应该工作。虽然大多数时候,最好通过使用形式来传递参数...

    +0

    谢谢@Anthony。这工作!学习使用表单传递参数的最佳资源是什么?为什么它更好?再次感谢!! – user1388066 2012-08-01 20:18:36

    +0

    如果你想从Javascript传递值,只需要学习一点jQuery。您还必须学习如何使用rails构建表单:http://guides.rubyonrails.org/form_helpers.html – 2012-08-01 20:20:03

    +0

    非常感谢@Anthony! – user1388066 2012-08-01 20:21:51

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

    感谢@meagar的帮助! – user1388066 2012-08-01 20:20:38

    相关问题