我正在使用Rails 3.我编写的控制器非常冗长。所以我想重构控制器。如何修改模型中的会话?
予编码的称为ProductMaker这使产品和修改会话(向导形式CURRENT_STEP产品的任务,如果请求是一个刷新等)
此类具有方法,该方法接收会话参数类,修改然后返回这个新的会话。
控制器的动作:在lib文件夹
def new
#INITIALIZE CODE
session[:refresh] ||= SortedArray.new [1]
#...MORE CODE
end
def create
#...MUCH CODE
unless Utilities.is_refresh(session[:refresh])
#...more code
session = ProductMaker.some_method_which_return_session(session) #KEY PROBLEM LINE
#...more code
end
#... MORE CODE
end
我ProductMaker类:
class ProductMaker
def self.some_method_which_return_session(session)
session[:any_key] = "some value"
return session
end
end
然而,当我写的关键问题LINE会议是一个零值。如果我评论这一行,会话是一个ActionDispatch :: Session :: AbstractStore :: SessionHash。
这可能是问题所在? 我如何重构控制器逻辑,修改许多会话密钥,并根据会话值“填充”模型,以建模/分类?
更新:
我在阅读有关红宝石中的绑定。
如何使用绑定和eval方法修改会话?
如果您有其他想法,请发布您的答案。
在此先感谢
非常感谢你,如果我昨天了解这个问题,我的新问题是修改会话变量,最后我使用绑定。 – maxiperez 2012-03-13 14:46:19