0

以下示例取自此文档页面:
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上的文档,并尝试了不同的表单覆盖,但到目前为止没有运气,即没有再次呈现列。

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

4

1 回答 1

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
于 2012-01-09T08:54:41.563 回答