rails 4,全局更改默认表单构建器 [英] rails 4, change default form builder globally
问题描述
我对默认表单构建器进行了子类化以添加一些其他方法.示例代码如下.
I have sub-classed the default form builder to add some additional methods. Sample code is below.
module ApplicationHelper
class AppFormBuilder < ActionView::Helpers::FormBuilder
def coordinates_field(method, options = {})
options[:readonly] = 'true'
....
@template.text_field(@object_name, method, objectify_options(options))
end
end
end
这很有效,但要使用它,我必须更改每个使用 coordinates_field
方法的表单的视图代码,即
This works well, but to use it I have to change the view code for every form that uses the coordinates_field
method, i.e.,
<%= form_for @object, :builder => ApplicationHelper::AppFormBuilder do |f| %>
...
<% end %>
听起来理论上可以全局更改默认表单构建器(config.action_view.default_form_builder
),但我似乎无法使其正常工作.这是我在 /config/application.rb
中尝试过的:
It sounds like it is theoretically possible to change the default form builder globally (config.action_view.default_form_builder
), but I can't seem to get this to work. This is what I have tried in /config/application.rb
:
module Web
class Application < Rails::Application
...
config.action_view.default_form_builder = "ApplicationHelper::AppFormBuilder"
end
end
当我点击具有表单的视图时,这会导致错误 undefined method 'new' for "ApplicationHelper::AppFormBuilder":String.
Which results in error undefined method 'new' for "ApplicationHelper::AppFormBuilder":String when I hit a view that has a form.
如果我改为尝试这个
config.action_view.default_form_builder = ApplicationHelper::AppFormBuilder
我在应用程序启动时收到错误 *config.action_view.default_form_builder = ApplicationHelper::AppFormBuilder*.
I get the error *config.action_view.default_form_builder = ApplicationHelper::AppFormBuilder* when the application starts.
谁能提供有关如何使其工作的指导?
Can anyone provide guidance on how to get this to work?
推荐答案
ApplicationHelper::AppFormBuilder
在 application.rb 加载时还不是必需的.您可以尝试将其放在一个单独的初始化文件中(在 config\initializers 中创建一个):
ApplicationHelper::AppFormBuilder
is not required yet at the time application.rb loads. You can try to put this in a separate initializer file (create one in config\initializers):
module Web
class Application
ActionView::Base.default_form_builder = AppFormBuilder
end
end
这篇关于rails 4,全局更改默认表单构建器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!