Cam*_*ron 7 json ruby-on-rails
我有一个Ruby on Rails表单,它接受输入并将其保存为模型属性.但是,其中一个属性包含json数据.我希望能够将输入的数据输入到多个字段中,并将其作为单个JSON对象保存在models属性中.有没有办法可以做到这一点?
如果它有帮助,我也可以制作哈希并将其转换为json.基本上我只想将多个输入字段合并为一个,然后从那里将其移除.
谢谢!
Dan*_*ski 13
这里有很多事情需要考虑.
第一个问题是从HTML表单中获取数据.如果使用标准Rails方式命名表单输入,则非常简单.
<input name="my_fields[value1]">
<input name="my_fields[value2]">
<input name="my_fields[sub1][value1]">
<input name="my_fields[sub1][value2]">
Run Code Online (Sandbox Code Playgroud)
如果你这样命名就可以使用paramshash via "en bloc"访问它们params[:my_fields],这会给你另一个包含你数据的哈希.
然后,您必须选择在模型中保存此数据的方法.有几种选择:
1. 使用字符串属性
只需使用一个string或text列并分配一个JSON字符串:
@my_model.my_data = params[:my_fields].to_json
Run Code Online (Sandbox Code Playgroud)
2. 使用序列化哈希
使用string或text列并在模型上将其声明为可序列化
serialize :my_data, Hash
Run Code Online (Sandbox Code Playgroud)
然后你可以使用这个列,因为它是一个简单的哈希,Rails将执行读写操作.
@my_model.my_data = params[:my_fields]
Run Code Online (Sandbox Code Playgroud)
to_json如果您需要真正的JSON字符串,则需要调用.3. 使用专门的JSON数据库类型
如果您需要能够使用SQL查询数据库,上述解决方案将无法正常工作.你必须使用专门的类型.
许多DBMS以XML或甚至JSON类型的形式提供结构化数据类型.(例如PostgreSQL)
| 归档时间: |
|
| 查看次数: |
9807 次 |
| 最近记录: |