以下示例摘自本文档页面:
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上的文档,并尝试了不同的表单覆盖,但到目前为止没有运气,即列没有再次渲染。
如果您可以帮助我使用给定示例中所需的那些表单覆盖的代码,那么我应该能够将其移植到我的代码中。
答案 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