视图中的Ruby on Rails命名约定

时间:2015-10-30 12:54:30

标签: ruby-on-rails ruby

在RoR视图中您经常需要显示某些模型的列表。如果您使用实例变量,例如@peoplecountries,RubyMine IDE将警告您应该在视图中使用最多两个实例变量。

所以,假设您将把它们包装在哈希中,例如:

view_params = { people: @people, countries: @countries }

我知道命名在RoR中非常重要。这种哈希是否有任何命名约定,我称之为view_params(在Django中他们称之为 context 我猜)或良好做法如何处理这个问题?

2 个答案:

答案 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