我正在使用ActionText编辑段落,它在本地运行良好,但是当我将其部署到Heroku时rich_text_area,即使我遵循了rails指南,它也会抛出一个错误,说未定义的方法rich_text_area_tag。我以为我需要在生产环境中配置活动存储,但事实并非如此。
这是我在 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 6 的 rails 5.2 应用程序时,就会发生这种情况。
在同一文件(config/application.rb)中,您必须将config.load_defaults更改为6.0:
config.load_defaults 6.0
如果您想知道后台发生了什么,请查看第 125 行的此链接。
为了避免ApplicationController
代码混乱,可以使用初始值设定项:
即添加一个新文件config/initializers/action_text.rb
:
ActiveSupport.on_load(:action_view) do
include ActionText::ContentHelper
include ActionText::TagHelper
end
灵感来自 p8 在已关闭的 Rails 问题中的评论。