rails 表单助手 color_field 没有通过提取值

rails form helper color_field not pulling value through

我有一个名为 class 的 'Color',它继承自 String,它需要 returns 一个彩色十六进制字符串。

我有以下型号

class Category < ActiveRecord::Base

  def color
    Color.new(self[:color])
  end

end

我对类别编辑表单有以下视图:

<%= form_for @category, url: @category do |f| %>
  <%= f.label :color %>:
  <%= f.color_field :color %>
<% end %>

无论我为类别设置 'color' 什么,color_field 总是 returns 黑色。我猜 nil 正在传递给该字段,而 black 只是默认值?

奇怪的是,如果我将 color_field 更改为 text_field,十六进制字符串会按预期通过。如果我调用@category.color、@category::color、@category[:color] 或@category.send :color 我也会收到预期的十六进制字符串,所以我无法计算出黑色 (或无)来自。

color_field

这是一个例子

f.color_field :color

# => <input id="color" name="color" type="color" value="#000000" />

所以默认情况下需要 value="#000000" 来覆盖它需要显式传递

<%= f.color_field :color, value: @category.color%>

参考:- http://railsdoc.com/references/color_field

*如有错误请指正***

我感觉你在这里返回的不是字符串,而是一个对象

def color
   Color.new(self[:color]) //returns object
end

也许你可以在 Color class(即 returns 十六进制)上定义一个 to_s 方法,然后执行

def color
  Color.new(self[:color].to_s) //returns hex
end