您的位置:首页 > 编程语言 > Ruby

ruby on rails 使用text存储hash类型的数据 Use text filed to store the hash map

2016-08-31 16:55 543 查看
在component表里用text类型的字段存储hash数据

(1)新建字段 ,这是migration的内容

class AddHintsToComponents < ActiveRecord::Migration[5.0]
def change
add_column :components, :hints, :text
end
end


(2)controller

def update
if @component.update!(component_params)
redirect_to @component, notice: 'Component was successfully updated.'
else
render :error
end
end




def component_params
params.require(:component).permit(:release_id, :component_type_id,
:remark, component_ids: [], hints: [:left, :mid, :right])
end


(3)model

class Component < ApplicationRecord
serialize :hints

def after_initialize
self.hints ||= {}
end


(4)_component.html.erb

<td>
left:<%= component.hints["left"] %> |
mid:<%= component.hints["mid"] %> |
right:<%= component.hints["right"] %>
</td


(5)_form.html.erb

<%= f.fields_for :hints do |h| %>
<div class="form-group">
<%= f.label 'hints left', class: 'col-sm-2 control-label' %>
<div class="col-sm-4">
<%= h.text_field :left, class: 'form-control',
value: (@component.hints && @component.hints.key?("left") ? @component.hints["left"] : "") %>
</div>
</div>

<div class="form-group">
<%= f.label 'hints mid', class: 'col-sm-2 control-label' %>
<div class="col-sm-4">
<%= h.text_field :mid, class: 'form-control',
value: (@component.hints && @component.hints.key?("mid") ? @component.hints["mid"] : "") %>
</div>
</div>

<div class="form-group">
<%= f.label 'hints right', class: 'col-sm-2 control-label' %>
<div class="col-sm-4">
<%= h.text_field :right, class: 'form-control',
value: (@component.hints && @component.hints.key?("right") ? @component.hints["right"] : "") %>
</div>
</div>
<% end %>


参考资料

http://vladexologija.blogspot.com/2012/12/rails-attribute-serialization_18.html

http://guides.rubyonrails.org/action_controller_overview.html#strong-parameters
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: