-3

在 Sinatra 应用程序中,我有一个代码

gef '/123' do
  @var1 = # some calculations
  @var2 = # some calculations
  #..... many of them

  haml(:"view123")
end

并且所有实例变量都在view123. 我想知道,使用哈希而不是像这样的许多变量会有什么好处:

gef '/123' do
  hash_var = {}
  hash_var[:var1] = # some calculations
  hash_var[:var2] = # some calculations
  #..... many of them

  haml(:"view123")
end
4

1 回答 1

2

我认为您走在正确的轨道上,很难在这种非常抽象的意义上提出建议,但总的来说,这# some calculations看起来像业务逻辑。业务逻辑属于模型。

换个模型怎么样?创建一个执行这些计算的新类,然后实例化它并将实例传递给您的视图。您的控制器/路由处理程序保持精简和干净,并且许多计算行都隐藏在专门用于该事物的文件中。干净整洁。

get '/123' do
  @calc = CrazyCalculator.new
  haml(:view123)
end

view123.erb:

<ul>
  <li>Calc1: <%= @calc.calc1 %></li>
  <li>Calc2: <%= @calc.calc2 %></li>
  <li>Calc3: <%= @calc.calc3 %></li>
  <li><!-- many other calculation methods --></li>
</ul>
于 2013-02-08T18:50:49.340 回答