0

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 显然将第一种形式解释为对局部变量的赋值。

4

1 回答 1

0

在你的控制器中尝试这样的事情:

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
  ...

即使记录未保存,表单也应具有初始值。

于 2011-06-14T20:34:20.707 回答