【发布时间】:2012-04-25 15:34:55
【问题描述】:
我有一个必须存在的 has_one 关系:
has_one :child, :dependent => :destroy
validates_presence_of :child
在我的控制器中,我使用以下方法构建子对象:
@parent.build_child
当表单提交错误时,渲染最终会丢失已构建的子项。这会导致我的 fields_for 为空白,从而阻止用户输入所需的子字段。有什么想法吗?
【问题讨论】:
-
您是否意识到
build_方法没有将任何内容保存到数据库中?为什么你希望你的孩子通过重定向得救?再次呈现edit视图的常用方法,并显示有关错误的信息。注意:render,而不是redirect_to。因此,您的视图将按照您的预期填充不完整的数据。 -
我正在渲染而不是重定向。抱歉没说清楚,我在帖子里改了。
-
所以你打电话给
@parent.build_child然后呢?你渲染一些视图来填充关于孩子的数据(那个窗台没有存储在数据库中)?填表的结果传给children_controller#create吧?这是您尝试通过@parent访问child的地方吗? -
对象不保存后再次渲染表单时,是不是又调用了这个?
@parent.build_child -
我在控制器的“新”动作中调用它,所以我认为它会再次被调用。当我输出孩子时,我在第一次点击新页面时得到它,但在重新渲染后就为零。
标签: ruby-on-rails forms nested-attributes