在RoR视图中您经常需要显示某些模型的列表。如果您使用实例变量,例如@people
和countries
,RubyMine IDE将警告您应该在视图中使用最多两个实例变量。
所以,假设您将把它们包装在哈希中,例如:
view_params = { people: @people, countries: @countries }
我知道命名在RoR中非常重要。这种哈希是否有任何命名约定,我称之为view_params(在Django中他们称之为 context 我猜)或良好做法如何处理这个问题?
答案 0 :(得分:3)
这是一个愚蠢的规则。关闭IDE中的规则。
坚持更好的规则 - "方法不能超过五行代码。"如果您发现控制器方法的长度超过五行,因为您构建了太多的实例变量 - 那么请将它们打包。但是,如果您可以在大约5行代码中创建所需的所有实例变量,那么这很好。
如果您查看Sandi Metz Rules For Developers中的示例,他们所做的就是将实例变量打包到另一个对象中。为什么有两个与控制器实例关联的实例变量比使它们属于新的对象实例更糟糕?
对我来说:
def index
@foo = Foo.get_some
@bar = Bar.get_some
end
比以下更清洁,更简单:
class FooBar
attr_reader :foo, :bar
def initialize(foo, bar)
@foo = foo
@bar = bar
end
end
class FooBarController
def index
foo = Foo.get_some
bar = Bar.get_some
@foo_bar = FooBar.new(foo, bar)
end
end
答案 1 :(得分:1)
使用非活动记录ruby类而不是哈希。一个实例变量可能是最好的。见外观模式:https://robots.thoughtbot.com/sandi-metz-rules-for-developers