Ruby on rails Monkey修补Rails标记的辅助方法
Rails 6.1发布了一个tag_助手的改进(特别是针对的),我现在需要它,用于我的Rails 6.0.x应用程序。基本上,改进只是一行代码中的一个非常小的更改,所以现在只需对当前的rails方法进行修补并获得改进应该很简单,对吗 具体地说,我正试图用下面的代码来修补下面的代码,但是代码没有被应用。我做错了什么 lib/core\u ext/rich\u text\u area.rbRuby on rails Monkey修补Rails标记的辅助方法,ruby-on-rails,ruby,monkeypatching,Ruby On Rails,Ruby,Monkeypatching,Rails 6.1发布了一个tag_助手的改进(特别是针对的),我现在需要它,用于我的Rails 6.0.x应用程序。基本上,改进只是一行代码中的一个非常小的更改,所以现在只需对当前的rails方法进行修补并获得改进应该很简单,对吗 具体地说,我正试图用下面的代码来修补下面的代码,但是代码没有被应用。我做错了什么 lib/core\u ext/rich\u text\u area.rb 您可以在lib/core\u ext/rich\u text\u area.rb文件中以更干净的方式进行修补:
您可以在lib/core\u ext/rich\u text\u area.rb文件中以更干净的方式进行修补: 注意:您在尝试使用
class\u eval
时遇到的错误RailError:uninitialized constant ActionView::Helpers::Tags::ActionText(NameError)
可以通过使用require'action\u text/tag\u helper'
来源:尝试将代码放入初始值设定项/action\u view/helpers/tags.rb;)如果有,请告诉我works@AlexisClarembeau,不起作用。我没有打开这个类,而是用Tags::ActionText.class_eval do替换了第2行(如果这个类还不存在的话,它会失败)——id做了什么。RailsError:未初始化的常量ActionView::Helpers::Tags::ActionText(NameError)。这可能是一个线索,但不确定如何从这里开始。
module ActionView::Helpers
class Tags::ActionText < Tags::Base
def render
options = @options.stringify_keys
debugger
add_default_name_and_id(options)
options["input"] ||= dom_id(object, [options["id"], :trix_input].compact.join("_")) if object
@template_object.rich_text_area_tag(options.delete("name"), options.fetch("value") { editable_value }, options.except("value"))
end
end
end
Dir[File.join(Rails.root, 'lib', 'core_ext', '*.rb')].each { |l| require l }
require 'action_text/tag_helper'
module ActionTextOverride
def render
options = @options.stringify_keys
add_default_name_and_id(options)
options['input'] ||= dom_id(object, [options['id'], :trix_input].compact.join('_')) if object
@template_object.rich_text_area_tag(options.delete('name'), options.fetch('value') { editable_value }, options.except('value'))
end
end
class ActionView::Helpers::Tags::ActionText
prepend ActionTextOverride
end