2013-01-11 41 views
2

在我的導航列表中,我有一個選擇的下拉框,其中包含管理員專有的所有用戶。管理員可以選擇一個用戶,並通過ajax更新視圖以顯示所選用戶的信息。通過Ajax使用Javascript設置Rails/Ruby變量

的觀點與一些更新這樣的:

$(#Users).change(function() { 
    $ajax({ 
     ... yada yada update information in view. 

不過,我想實現是,如果我切換到其他視圖/ URL(如我的賬戶html.erb到mygraph.html。 erb)或者刷新我的頁面,我希望用戶選擇下拉框以保持我所做的用戶選擇。

我想用rails cookies來做到這一點。但我必須重定向到控制器來設置cookie。

我嘗試了POST Ajax調用,

$(#Users).change(function() { 
    $.ajax({ 
    ... 
    data: { 
     "<%= cookies[:selected] %>": this.value 

它不工作,但由於某種原因,我已經懷疑,這將是這麼簡單。

我該如何實施此解決方案?

回答

4

您不必重定向控制器操作。你可以調用控制器動作的ajax調用。您可以在控制器動作設定的cookie如下:

$(function(){ 
    $('#user_select')change(function(){ 
    value = $(this).val() 
    $.post("controller/action",{selected_value : value}, function(data, status){ 
     if(status == "success") 
     { 
     alert(data); 
     } 
    }); 
    return false; 
    }) 
    }) 

控制器:

def action 
    cookies[:name]=params[:selected_value] 
    render :text => "success" 
end 
+0

不錯!一個簡單的問題,我應該如何將user_select值傳遞給action? – user1002563

+0

@ user1002563編輯答案 – codeit

+0

渲染是相當侵擾性的,但不可避免的權利?我試圖使用render:nothing => true,但它仍顯示一條空的消息。我使用了一個渲染json:一些東西,但對我來說這似乎是一個黑客:C。無論如何非常感謝你! – user1002563