Как получить rails3 для отображения начальных значений в полях формы нового действия? - PullRequest
0 голосов
/ 15 июня 2011

Помощник вида Rails3 form_for отображает текущие значения при редактировании.

Я хотел бы заполнить модель некоторыми начальными значениями при создании.Не то же самое начальное значение каждый раз, но фактически копируйте некоторые значения из последней сохраненной записи.

Когда я делаю это и использую помощник form_for для создания формы, ни одно из значений не появляется.

Похоже, что form_for не генерирует атрибуты значения для полей ввода модели, еще не сохраненной?Но я не буду сохранять вновь созданную модель перед отображением формы, потому что: 1. она не будет проверяться, 2. это усложняет семантику отмены, 3. переход от формы приведет к непреднамеренному сохранению записи.

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

Серьезно.Я читал весь день без ответа.Кажется, что должно быть простое решение, которое я упускаю.


Проблема возникла из-за кода инициализации в модели.Контроллер имел

def new
  @post = Post.new
  @post.initFromLast
end

Модель имела

def initFromLast
  last_post = Post.last
  title = last_post.title
  summary = last_post.summary
end

Требуемая модель

def initFromLast
  last_post = Post.last
  write_attribute(:title, last_post.title)
  write_attribute(:summary, last_post.summary)
end

Очевидно, что Ruby интерпретировал первую форму как присваивание локальным переменным.

1 Ответ

0 голосов
/ 15 июня 2011

Попробуйте что-то вроде этого в вашем контроллере:

def new
  last_post = Post.last
  @post = Post.new
  @post.title = last_post.title
  @post.summary = last_post.summary
  ...
end

... тогда, по вашему мнению, вы должны иметь что-то вроде:

form_for @post do |form|
  form.text_field :title
  form.text_area :summary
  ...

Форма должен иметь начальные значения, даже если запись не сохранена.

...