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

原创 2016年08月31日 16:55:23




在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


Ruby中Hash常用方法

一。给Hash添加默认值 : 哈希常用方法" title="ruby 哈希常用方法" style="margin:0px; padding:0px; border:0px none; list...
  • wlchn
  • wlchn
  • 2015年10月16日 16:00
  • 496

redis的五种数据类型---hash类型

简介       常用命令:hget;hset;hgetall等       我们可以将Redis中的Hashes类型看成具有String Key和String Value的map容器。所以该类型非常...
  • kwy15732621629
  • kwy15732621629
  • 2016年12月25日 20:57
  • 1282

数据结构:hash_map原理

这是一节让你深入理解hash_map的介绍,如果你只是想囫囵吞枣,不想理解其原理,你倒是可以略过这一节,但我还是建议你看看,多了解一些没有坏处。 hash_map基于hash table(哈希表)。...
  • gao1440156051
  • gao1440156051
  • 2016年04月14日 16:30
  • 1415

一个极好的hash map实现-字符串hash

Note: You are looking at a static copy of the former PineWiki site, used for class notes by James A...
  • u013797029
  • u013797029
  • 2015年04月16日 10:09
  • 344

ruby map迭代简洁写法实现原理分析

主要介绍了ruby迭代map的简洁写法实现原理分析 map简便的方法写法 举个例子:现在有一个字符串数组,需要把其中的字符串都转化为大写 array = ["first","second"] ar...
  • baodongdong123
  • baodongdong123
  • 2017年03月23日 14:16
  • 303

刻意练习--Rails RESTful(一)

一本被人反复提及的书《哪儿来的天才》中说过,大部分所谓的天才都是通过反复的刻意练习得到的。当你的练习时间达到10000小时以后,你就会成为该领域的专家。 最近在学习rails如何实现RESTful...
  • kiwi_coder
  • kiwi_coder
  • 2014年07月01日 11:45
  • 2889

mysql笔记四——TEXT、LOB类型的使用和存储过程的使用

先建立一个带有text类型和lob类型的表格 CREATE TABLE note( id INT AUTO_INCREMENT PRIMARY KEY, node TEXT )...
  • wangjian_an
  • wangjian_an
  • 2016年08月09日 00:32
  • 1156

Ruby Hash的常用函数

1、Hash表的生成 使用第一种形式时,参数的个数必须是偶数.(奇数位参数是索引,偶数位参数是元素值). 使用第二种形式(将一个哈希表对象指定给参数)时, 将生成并返回一个与指定哈希表相 同的全...
  • dazhi_100
  • dazhi_100
  • 2013年07月25日 20:55
  • 2852

rails/ruby 查找类的方法

总所周知,rails作为很强大的web框架,rails的语言ruby里的类会有很多方法,甚至一个类中一些方法可以实现同样的效果,那么这么多方法怎么查到自己想要的方法呢? 2.1.1 :001 > A...
  • feigeswjtu
  • feigeswjtu
  • 2016年03月31日 22:30
  • 882

Bitcask哈希存储系统

Bitcask哈希存储系统 一. 简介     bitcask来自于riak,是一个日志(log-structured)存储系统。用在riak的分布式数据库的底层key-value的存储,是基...
  • chenglinhust
  • chenglinhust
  • 2014年01月01日 10:23
  • 1337
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ruby on rails 使用text存储hash类型的数据 Use text filed to store the hash map
举报原因:
原因补充:

(最多只允许输入30个字)