Rails3 form_for视图辅助对象在编辑时显示当前值。
我想在创建时用一些初始值填充模型。不是每次都是相同的初始值,而是实际复制存储的最后一条记录中的一些值。
当我执行此操作并使用form_for辅助对象构造表单时,不会显示任何值。
看起来form_for没有为尚未保存的模型的输入字段发出值属性?但在显示表单之前,我不会保存新创建的模型,因为:1。它不会验证,2。这使取消的语义变得复杂。导航离开表单会留下一个无意中保存的记录。
如何从新操作中获得呈现的表单以显示一些动态默认值?
说真的。我读了一整天都没有回音。这似乎应该有一个简单的解决方案,但我错过了。
问题来自模型中的初始化代码。控制器有
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显然将第一种形式解释为对局部变量的赋值。
在控制器中尝试这样的操作:
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
...
表单应该具有初始值,即使记录未保存也是如此。