2012-06-07 38 views
1

請考慮在控制器下面的方法:如何從控制器返回JSON或Ruby哈希值?

def get_navigation_from_session 
    respond_to do |format| 
    format.json { render json: session[:navigation]} 
    end 
    return session[:navigation] 
end 

我希望它做的是響應一個Ajax調用併發送導航哈希值,如果它被要求它。如果不是,我只是希望它將散列返回到需要它的ruby代碼。這顯然不起作用。我如何解決上述方法來完成這個目標?

謝謝

+0

你應該只擔心從控制器動作中寫一個響應,不返回任何類型的值。你應該改變任何調用控制器動作的代碼,並希望返回一個哈希。不明白你想要用代碼完成什麼,很難給你一個好的解決方案。也許如果你發佈其餘的代碼或解釋你正在嘗試做什麼,可以幫助重構你的代碼。 –

+0

感謝Ogz。我將導航座標存儲在會話中,用戶在應用程序中。我需要不斷地根據這些信息更新佈局中的某些內容,所以我想讓一些Ajax通過應用程序控制器(看起來像是製作路線的邏輯地點)並找出答案。如果你能引導我走向最佳實踐的方向,我會很感激。 –

回答

0
# this is your action method, supposed to be called via your request cycle with rendering 
def get_navigation_from_session 
    respond_to do |format| 
    format.json { render json: get_navigation_hash_from_session } 
    end 
end 

# a getter - maybe higher up in controller hiararchy 
def get_navigation_hash_from_session 
    session[:navigation] 
end