在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
答案 0 :(得分: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>