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

时间:2019-08-23 16:40:34

标签: ruby-on-rails heroku ruby-on-rails-6 actiontext

我正在使用ActionText编辑一个段落,该段落在本地运行得很好,但是当我将其部署到Heroku时,该页面的格式为rich_text_area,即使我遵循了rails指南,也会抛出一个错误,提示未定义的方法rich_text_area_tag。我以为我需要在生产中配置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 %>

3 个答案:

答案 0 :(得分:7)

我在网上找到了它,这对我有帮助:

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

答案 1 :(得分:2)

首先请确保您在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

答案 2 :(得分:0)

为避免使 ApplicationController 代码混乱,您可以使用初始化程序:

即添加新文件 config/initializers/action_text.rb

ActiveSupport.on_load(:action_view) do
  include ActionText::ContentHelper
  include ActionText::TagHelper
end

灵感来自于 p8 在封闭的 Rails issue 中的评论。