-1

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

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

4

1 回答 1

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
于 2013-06-01T07:18:44.210 回答