将多选select标记值作为rails 3中的数组

时间:2013-03-04 08:14:38

标签: ruby-on-rails-3

我使用了多选选择标记。

在我使用的创建方法中,

category= @admin.category.reject! { |c| c.empty? }.to_s

将我的选择标记(选中)值作为数组保存到数据库中。

但是在更新方法中同样的事情并没有得到实现。 原始格式我得到的是,

--- - '' - Adventure Tours - Cruises - Exploration 

我想将其更改为像

这样的数组
["Adventure Tours","Cruises","Exploration"]

1 个答案:

答案 0 :(得分:0)

您可以使用ActiveRecord提供的'serialize'方法将值作为数组存储到数据库中。

存储这些值数组的列的类型应为text

例如:(假设您要在类别表中保存类别代码)

# In the migration file
add_column :categories, :codes, :text 

# In the model
class Category < ActiveRecord::Base
  serialize :codes
end

它将作为

保存在数据库中
---
- abc 
- xyz
- pqr

并从数据库中获取后,如

Category.find(some_id).codes

您将获得该给定类别记录的一系列代码。

["abc", "xyz", "pqr"]

您可以参考此文档http://api.rubyonrails.org/classes/ActiveRecord/Base.html#method-c-serialize(搜索标题:在文本列中保存数组,散列和其他不可映射的对象)