gpt4 book ai didi

ruby-on-rails - rails 4,全局更改默认表单构建器

转载 作者:行者123 更新时间:2023-12-04 09:31:12 24 4
gpt4 key购买 nike

我已经对默认表单构建器进行了子类化以添加一些额外的方法。示例代码如下。

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 的表单的 View 代码。方法,即
<%= form_for @object, :builder => ApplicationHelper::AppFormBuilder do |f| %>
...
<% end %>

听起来理论上可以全局更改默认表单构建器( config.action_view.default_form_builder ),但我似乎无法让它工作。这是我在 /config/application.rb 中尝试过的:
module Web
class Application < Rails::Application
...
config.action_view.default_form_builder = "ApplicationHelper::AppFormBuilder"
end
end

当我点击具有表单的 View 时,这会导致错误 undefined method 'new' for "ApplicationHelper::AppFormBuilder":String。

如果我改为尝试这个
config.action_view.default_form_builder = ApplicationHelper::AppFormBuilder

当应用程序启动时,我收到错误 *config.action_view.default_form_builder = ApplicationHelper::AppFormBuilder*。

任何人都可以提供有关如何使其工作的指导吗?

最佳答案

official docs 中所述, 在 rails 5 正确的方法是在 Controller 中指定它。要使其应用广泛,只需在您的 ApplicationController 中设置即可:

class ApplicationController < ActionController::Base
default_form_builder AppFormBuilder
end

这更有意义。 FormHelpers 是 View 层的一部分,而不是应用程序配置。

关于ruby-on-rails - rails 4,全局更改默认表单构建器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22711801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com