Sinatra的全局实例变量

时间:2013-06-01 04:22:47

标签: ruby sinatra

我有一个数组,@genres,我从查询sinatra服务器上的数据库得到。我使用此类型列表填充导航栏中的下拉菜单。我希望这个列表可用于我去的每个页面,并且我还希望每次更新列表,以防在页面加载之间将新类型添加到数据库中。

显然,我可以添加运行SQL查询的代码,并为每个@genregetpost方法填充delete变量,但这似乎很多重复的代码。是否有更优雅的方法来创建所有sinatra http方法共有的变量?

1 个答案:

答案 0 :(得分:3)

尝试使用之前的过滤器:

before do
  @genres ||= Genre.all # or however you access the array
end

如果您想要忽略put个变量请求,请为此定义条件:

set :method do |method|
  condition do
    method.include? request.request_method.downcase.to_sym
  end
end

然后你可以这样做:

before :method => [:get, :post, :delete] do
  @genres ||= Genre.all
end