Rails удаляет атрибуты из переменной экземпляра - PullRequest
0 голосов
/ 24 февраля 2012

В моем контроллере у меня есть:

  def edit
    @konkurrencer = Konkurrencer.find(params[:id])
    @konkurrencer.attributes.map{|d| d.map{|d| d.dup.force_encoding("UTF-8") } }
  end

Я хочу удалить атрибуты create_at и updated_at для @konkurrencer, потому что не могу вызвать force_encoding для формата времени.

Ответы [ 3 ]

2 голосов
/ 24 февраля 2012

Возможно, вы захотите это вместо удаления этих атрибутов:

@konkurrencer.attributes.map{|d| d.map{|d| d.dup.force_encoding("UTF-8") if d.respond_to?(:force_encoding) }

Это также пропустит любые другие ваши атрибуты, которые не реагируют на force_encoding.Это приводит к большой цепочке нулей, так что я думаю, что то, что вы делаете, здесь не так ...

1 голос
/ 24 февраля 2012
@konkurrencer.attributes.except(:created_at, :updated_at).map{|d| d.map{|d| d.dup.force_encoding("UTF-8") } }
1 голос
/ 24 февраля 2012

Вы можете проверить тип атрибута и вызвать force_encoding, только если это String. Попробуйте изменить сегмент, который похож на

d.dup.force_encoding("UTF-8")

с

(d.is_a? String) ? d.dup.force_encoding('UTF-8') : d.dup
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...