Rails 6 ActionText 在 Heroku 上不起作用(未定义的方法 'rich_text_area_tag')



我正在使用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 问题中的评论。

相关内容

最新更新