如何从数据库Ruby on Rails

时间:2018-02-11 20:32:51

标签: ruby-on-rails arrays json

我将一个字符串数组保存到我的rails数据库中,但是当我在视图中使用它时,我相信它正在打印数组的字符串定义。我在这里处理JSON吗? (当它保存到数据库时,它只是一个包裹在字符串中的数组?)

我如何拥有它,以便在我看来,它只显示项目?

<%= record.items %>

显示在我的html标记内:

["item1", "item2", "item3"]

我尝试迭代record.items.each do |item|,但这不起作用。

2 个答案:

答案 0 :(得分:0)

如果您将“精确”数组保存为字符串,则Array#each将无效,因为它不是String类中的方法。

也许不是最好的选择,但你可以使用JSON.parse,这样就可以获得你的数组,并能够迭代内部的每个对象:

require 'json'

str = '["item1", "item2", "item3"]'
JSON.parse(str).each { |item| p item }
# "item1"
# "item2"
# "item3"

为了完成这项工作,你的字符串必须是一个数组,在你的例子中,第二项缺少它的双引号。

您可以考虑使用序列化或数组数据类型,具体取决于您当前的数据库。

答案 1 :(得分:0)

更好地解决您的问题的方法是serialize您的项目列。我认为默认情况下它的数组可以使用Hash或JSON。

class Record < ActiveRecord::Base
  serialize :items
end

调用record.items会以您需要的方式返回数据。如果你这样做,你将不得不更新你的旧记录以支持它。