gpt4 book ai didi

ruby-on-rails - 带有 block 的 content_tag 的未定义方法 `output_buffer='

转载 作者:行者123 更新时间:2023-12-04 22:51:10 26 4
gpt4 key购买 nike

在 lib/my_lib.rb

class MyLib
include ActionView::Helpers::TagHelper

def foo
content_tag :div do
"hello"
end
end
end

给出一个
require 'lib/my_lib' ;MyLib.new.foo
NoMethodError: undefined method `output_buffer=' for #<MyLib:0x7f3209aaa450>
from /var/lib/gems/1.8/gems/actionpack-3.0.5/lib/action_view/helpers/capture_helper.rb:175:in `with_output_buffer'
from /var/lib/gems/1.8/gems/actionpack-3.0.5/lib/action_view/helpers/capture_helper.rb:40:in `capture'
from /var/lib/gems/1.8/gems/actionpack-3.0.5/lib/action_view/helpers/tag_helper.rb:77:in `content_tag'
from ./lib/my_lib.rb:6:in `foo'
from (irb):1

最佳答案

是否有特殊原因不能将此逻辑放入 View 中?

content_tag 是为 View 环境制作的,不打算从 Controller 或其他库中调用。您需要将 MyLib 类设置为 View 。

虽然我建议您重新思考并重新审视您的代码和设计,但您可以通过从 ActionView::Base 进行子类化来实现您想要的。

class MyLib < ActionView::Base
include ActionView::Helpers::TagHelper

def foo
content_tag :div do
"hello"
end
end
end

关于ruby-on-rails - 带有 block 的 content_tag 的未定义方法 `output_buffer=',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5452646/

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