Ruby on Rails Перезаписывает средства доступа по умолчанию - PullRequest
0 голосов
/ 09 декабря 2010

В моей модели я говорю:

def dag
  'test'
end

Но когда я зацикливаю все записи и использую

f.text_field :dag

Я все еще не получаю значение "test" ... Я получаю значение из базы данных. Как я могу переписать получатель по умолчанию для форм? Я работаю, когда говорю

Model.dag # returns 'test'

Ответы [ 4 ]

1 голос
/ 09 декабря 2010

Хотя в вашем примере это не указано, вы определили dag как метод класса вместо метода экземпляра? Model.dag подразумевает, что это метод класса, который вам не нужен.

0 голосов
/ 22 декабря 2010

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

0 голосов
/ 09 декабря 2010

Класс:

class DenLangeKamp < ActiveRecord::Base
  belongs_to :liga, :class_name => "DenLangeLiga"

  DAYS = { "Man" => 1, "Tir" => 2, "Ons" => 3, "Tor" => 4, "Fre" => 5, "Lør" => 6, "Søn" => 7 }

  def dag
    DAYS.invert[reader_attribute(:dag)]
  end

  def dag=(dag)
    write_attribute(:dag, DAYS[dag])
  end
end

и тогда форма выглядит так:

.........
<% liga_form.fields_for :kampe do |kamp_form| %>
  <tr>
    <td><%= kamp_form.text_field :dag %></td>
.........

Я сохраняю день как число в БД, чтобы можно было отсортировать по дням. «dag» - это «день» на английском языке.

Когда я говорю как «DenLangeKamp.first.dag», я получаю правильный возврат (например, «Человек», «Тир» и т. Д.) Но в форме я получаю вместо этого число! Так что не похоже, что он действительно «перезаписывает» метод getter.

0 голосов
/ 09 декабря 2010

Если бы вы могли дать нам немного больше кода, будет более полезно найти правильный ответ для вас.

Сказал так, я подозреваю, что вы объявили ваш dag метод защищенным или закрытым. Посмотрите, есть ли ключ private (или protected) над объявлением метода dag в коде модели: если это так, метод является закрытым (или защищенным), поэтому он не может быть доступен для вашего шаблона .. .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...