рельсы формируют хелпер color_field, не тянущий значение через - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть класс с именем 'Color', который наследуется от String, он принимает и возвращает шестнадцатеричную строку цвета.

У меня есть следующая модель

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_field всегда возвращает черный цвет.Я предполагаю, что nil передается в поле, а черный - просто значение по умолчанию?

Странно, если я изменю color_field на text_field, шестнадцатеричная строка будет проходить, как и ожидалось.Если я вызываю @ category.color, @category :: color, @category [: color] или @ category.send: color, я также получаю шестнадцатеричную строку, как и ожидалось, поэтому я не могу понять, где находится черный (или ноль)Исходя из.

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

У меня такое чувство, что вы возвращаете здесь не строку, а объект

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

Может быть, вы можете определить метод to_s для класса Color (который возвращает шестнадцатеричный код), а затем выполнить

def color
  Color.new(self[:color].to_s) //returns hex
end
0 голосов
/ 20 сентября 2018

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

* поправьте меня, если я ошибаюсь ***

...