有没有办法在控制器方法之间共享一个数组,并在页面重新加载或调用另一个控制器的方法时存储它?一些方法应该改变这个数组。
您可以使用Rails缓存。
Rails.cache.write("list",[1,2,3])
Rails.cache.read("list")
class BarsController < UsersController
before_filter :init_foo_list
def method1
render :method2
end
def method2
@foo_list.each do | item|
# do something
end
end
def init_foo_list
@foo_list ||= ['Money', 'Animals', 'Ummagumma']
end
end
class BarsController < UsersController
before_filter :init_foo_list
def method1
render :controller => "FoosController", :action => "method2"
end
def init_foo_list
params[:shared_param__] ||= ['Money', 'Animals', 'Ummagumma']
end
end
class FoosController < UsersController
def method2
params[:shared_param__].each do | item|
# do something
end
end
end
为共享参数键设置唯一名称,以避免与现有键发生冲突。
另一种选择是将共享数组存储在会话中,在最终渲染之前删除它。
before_filter
中设置数值。 - Harish Shetty@@foo_list
而不是@foo_list
)。 - Harish Shetty@pages=Post.find.all`
@@my_value=@pages.(any manipulations)
@@my_values
可以在该控制器的任何操作中使用。希望这有所帮助...
Tony
的观点。除非您确保在会话中list
名称的唯一性,否则此解决方案将在并发请求期间失败。 - Harish Shetty