我在轨道应用程序上有这个信息,我希望显示,但我想稍微操纵它并用它来改变它。信息存储在数据库中。现在我正在查看我的show.html.haml页面并创建一个包含此信息的表。
在数据库中,它存储为
{
"images" => true,
"age" => true,
"position" => true
}
我也可以通过输入
在控制台中进行调整player.last.information
所以考虑到这一点,在我的haml文件中我有
%dd @player.information
我得到了我需要的所有信息。但是,我想把它们分开一点。对此进行了一些研究here我能够逐行分解控制台中的信息。但是我将它们从终端转移到代码中。
我试图在我的模型中开始非常简单
def information
@player.information
end
然后在我的show.html.haml文件中假设它就像这一样简单,没有任何运气。如果有的话这是我的问题。我怎样才能获得在我的模型中创建的方法出现在我的视图中?
%dd :information
我没有触及控制器中的任何东西。我不认为我需要做任何事情,(虽然肯定是错的)是否有人能够为我快速看一下这个?
非常感谢。
答案 0 :(得分:0)
首先,你有这段代码
def information
@player.information
end
将抛出一个堆栈错误(实际上,它可能会在它自己的实例方法中使用 内部的 然而,这通常是不鼓励的。您可以更好地保留属性,以便在需要时始终获取属性的原始内容,并且如果您想要某种特定的属性格式,则可以使用补充方法。 例如,如果您需要突破 会给你以下输出: 执行 当然,我并不熟悉你想要对那个哈希做什么样的格式化,但天空是极限,所以发疯了。 另外,我很想知道你为什么要在@player
实例中断,然后才会出现堆栈错误。如果您绝对必须覆盖information
,例如,如果information
是一个字符串,并且您要求它始终是低级的,那么您可以像这样定义方法:< / p>
def information
read_attribute(:information).downcase
end
information
属性,可能将所有键格式化为句子,那么最好是这样的:def formatted_information
self.information.keys.to_sentence.titleize
end
"Images, Age, And Position"
@player.formatted_information
。附带问题
information
属性中存储值的哈希值,而不仅仅是让该属性中的每个键都是它自己的属性 - 即{{1 },@player.images
和@player.age
?