javascript
  • ruby-on-rails
  • parameter-passing
  • 2012-08-01 148 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

    相關問題