Rails 6 ActionText 在 Heroku 上不工作(未定义的方法 'rich_text_area_tag')
Rails 6 ActionText isn't working on Heroku (undefined method 'rich_text_area_tag')
我正在使用 ActionText 编辑一个段落,它在本地完美运行,但是当我将它部署到 Heroku 时,该页面具有 rich_text_area 的形式,它抛出一个错误,指出未定义的方法 rich_text_area_tag尽管我遵循了 rails 指南。我以为我需要在生产环境中配置 Active Storage,但事实并非如此。
这是我在 Heroku 的日志中得到的:
ActionView::Template::Error (undefined method 'rich_text_area_tag' for #<#<Class> Did you mean? rich_text_area)
<%= f.label :something, class:'label' %>
<%= f.rich_text_area :something %>
我在网上找到这个,对我很有帮助:
https://github.com/JoeWoodward/spree_helper_issue
我不确定这是否是正确的方法,但这是一个临时的解决方法。
解决方案:
在application_controller.rb
中输入以下内容:
require 'action_text'
class ApplicationController < ActionController::Base
helper ActionText::Engine.helpers
...
end
helper
的文档:https://apidock.com/rails/AbstractController/Helpers/ClassMethods/helper
首先确保你在 config/application.rb:
中有这一行
require 'rails/all'
如果是 rails 6 应用程序 action_text/engine
应该加载。
如果没有,可能是 zeitwerk 没有加载。当您的 rails 5.2 应用已更新至 rails 6.
时,会发生这种情况
在同一文件 (config/application.rb) 中,您必须将 config.load_defaults 更改为 6.0:
config.load_defaults 6.0
如果您想知道后台发生了什么,请查看第 125 行的 this link。
为避免 ApplicationController
代码混乱,您可以使用初始值设定项:
即添加一个新文件 config/initializers/action_text.rb
:
ActiveSupport.on_load(:action_view) do
include ActionText::ContentHelper
include ActionText::TagHelper
end
我正在使用 ActionText 编辑一个段落,它在本地完美运行,但是当我将它部署到 Heroku 时,该页面具有 rich_text_area 的形式,它抛出一个错误,指出未定义的方法 rich_text_area_tag尽管我遵循了 rails 指南。我以为我需要在生产环境中配置 Active Storage,但事实并非如此。
这是我在 Heroku 的日志中得到的:
ActionView::Template::Error (undefined method 'rich_text_area_tag' for #<#<Class> Did you mean? rich_text_area)
<%= f.label :something, class:'label' %>
<%= f.rich_text_area :something %>
我在网上找到这个,对我很有帮助:
https://github.com/JoeWoodward/spree_helper_issue
我不确定这是否是正确的方法,但这是一个临时的解决方法。
解决方案:
在application_controller.rb
中输入以下内容:
require 'action_text'
class ApplicationController < ActionController::Base
helper ActionText::Engine.helpers
...
end
helper
的文档:https://apidock.com/rails/AbstractController/Helpers/ClassMethods/helper
首先确保你在 config/application.rb:
中有这一行require 'rails/all'
如果是 rails 6 应用程序 action_text/engine
应该加载。
如果没有,可能是 zeitwerk 没有加载。当您的 rails 5.2 应用已更新至 rails 6.
时,会发生这种情况在同一文件 (config/application.rb) 中,您必须将 config.load_defaults 更改为 6.0:
config.load_defaults 6.0
如果您想知道后台发生了什么,请查看第 125 行的 this link。
为避免 ApplicationController
代码混乱,您可以使用初始值设定项:
即添加一个新文件 config/initializers/action_text.rb
:
ActiveSupport.on_load(:action_view) do
include ActionText::ContentHelper
include ActionText::TagHelper
end