rubyonrails3-如何让rails3在新操作的表单字段中显示初始值



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

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

相关内容

  • 没有找到相关文章

最新更新