我有一个将数组转换为哈希的函数,我想在 rails 应用程序中的所有模型、控制器和视图文件中使用它。
这是否违反了一些核心设计原则,或者我错过了一些非常明显的东西?
更新:这实际上是一个软件工程问题。我想了解为什么rails中不允许一些“方便”的东西,我怀疑这正是因为他们不希望我们这样做
我有一个将数组转换为哈希的函数,我想在 rails 应用程序中的所有模型、控制器和视图文件中使用它。
这是否违反了一些核心设计原则,或者我错过了一些非常明显的东西?
更新:这实际上是一个软件工程问题。我想了解为什么rails中不允许一些“方便”的东西,我怀疑这正是因为他们不希望我们这样做
这实际上可能是一种不好的做法。最好始终在控制器和模型中使用数组和散列,并在必要时将它们在视图中转换为替代方案。
也就是说,如果数据在整个应用程序中以原生方式表示为数组,则以这种方式使用它,并且如果需要在视图中作为散列,则首先将其转换并分配它,或者使用帮助器在视图中转换它。
查看全局助手进入:helpers/application_helper.rb
如果您必须从控制器调用助手,您仍然可以在那里定义它,我相信您可以这样做:
def Something
....
hashData = @template.helper(arrayData)
end
在模型中调用助手真的不是一个好主意,没有意义。
最后一点,将这个逻辑封装在一个库中可能是理想的,你的控制器可以调用一个库,你的视图助手也可以。
我认为你是:视图不应该需要那种方法。控制器应该这样做并将其传递给视图以进行显示。控制器或者更好的服务层可能会将该方法应用于模型对象,但模型对象没有理由知道它。