我在'vendor / bundler'中使用Gems。当我收到编码错误时,我通过在“output_safty_encoding_patch.rb
”中添加名为“config/initializer
”的文件来修复它:
output_safty_encoding_patch.rb
module ActiveSupport
class SafeBuffer < String
def concat(value)
if value.html_safe?
super(value.force_encoding('utf-8'))
else
super(ERB::Util.h(value.force_encoding('utf-8')))
end
end
alias << concat
end
end
然后我使用了宝石'设计'并尝试创建一个新帖子。 我收到了这个错误。
ActionView :: Template :: Error(未定义的方法`force_encoding'为nil:NilClass):
我的日志:
Processing by PostsController#new as HTML
Rendered posts/_form.html.slim (30.2ms)
Rendered posts/new.html.erb within layouts/application (36.8ms)
Completed 500 Internal Server Error in 43ms
ActionView::Template::Error (undefined method `force_encoding' for nil:NilClass):
1: = form_for(@post) do |f|
2: -if @post.errors.any?
3: #error_explanation
4: h2= pluralize(@post.errors.count, "error")
config/initializers/output_safty_encoding_patch.rb:7:in `concat'
app/views/posts/_form.html.slim:1:in _app_views_posts__form_html_slim__2419859499811208315_70341230451880
app/views/posts/new.html.erb:4:in _app_views_posts_new_html_erb___3935161508588949089_70341230567660
答案 0 :(得分:0)
您可能需要重新考虑ActiveSupport :: Safebuffer的猴子补丁(您在config/initializers/output_safty_encoding_patch.rb
中获得的文件)。
改变核心类的行为必然会遇到难以调试的问题(比如这个)。
也许你可以在第一时间发布一个关于导致你进入猴子补丁的问题?