rails 4,全局更改默认表单构建器 [英] rails 4, change default form builder globally

查看:38
本文介绍了rails 4,全局更改默认表单构建器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对默认表单构建器进行了子类化以添加一些其他方法.示例代码如下.

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆