如何为活动脚手架中的链式表单字段定义表单覆盖

时间:2012-01-06 09:43:54

标签: ruby-on-rails activescaffold

以下示例摘自本文档页面:
https://github.com/activescaffold/active_scaffold/wiki/Chaining-Form-Fields

[示例开始]
您可以设置列数组以在列更改时更新多个列,并链接列更新:

class UsersController < ApplicationController
  active_scaffold do |config|
    config.columns[:author].form_ui = :select
    config.columns[:author].update_columns = [:book, :editorial]
    config.columns[:book].form_ui = :select
    config.columns[:book].update_columns = :format
  end
end

在此示例中,书籍,编辑和格式的字段在作者更改时更新,并且当书籍更改时,仅更新格式。必须为编辑和格式列定义使用新作者或书籍的表单覆盖,在其他情况下,这些字段在再次呈现时不会更改。 [示例结束]

在示例中,它声明“必须定义使用新作者或书籍的表单覆盖”。

问题是如何定义那些表格覆盖?

我已阅读https://github.com/activescaffold/active_scaffold/wiki/Form-Overrides上的文档,并尝试了不同的表单覆盖,但到目前为止没有运气,即列没有再次渲染。

如果您可以帮助我使用给定示例中所需的那些表单覆盖的代码,那么我应该能够将其移植到我的代码中。

1 个答案:

答案 0 :(得分:0)

以下是我的问题的解决方案:

我按照“https://github.com/activescaffold/active_scaffold/wiki/Chaining-Form-Fields”上的示例进行操作,但是当它对我的链式列不起作用时(更新第一列时,所有链接列都会正确更新,但更新第二列时,其链接列会呈现为空白列表),然后我集中(盲目地?)在示例下面解释的细节,因为我认为这是解决我的问题的第一步:“必须为编辑和格式定义使用新作者或书籍的表单覆盖列,在其他情况下,这些字段在再次渲染时不会改变“。

然而情况并非如此,在帮助程序中不需要表单覆盖才能使其工作,在帮助程序中“options_for_association_conditions”就足够了。例如v2.4,可能在v3.0 +中不再需要表单覆盖。

解决方案位于示例wiki的下一段中:“通常只发送已更改列的值,如果需要其他值来呈现更新的列,请启用send_form_on_update_column,并且将发送所有表单”。我的问题是,从第二列链接的列也需要来自第一列的值,因此使用“send_form_on_update_column”设置第二列(即发送整个表单,而不仅仅是它自己的值)解决了我的问题。

在示例中,这将是:

config.columns[:book].send_form_on_update_column = true