11

我正在使用 ActionText 来编辑一个段落,它在本地工作得很好,但是当我将它部署到 Heroku 时,即使我遵循了 rails 指南,它也会抛出一个错误,说 undefined method 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 %>
4

3 回答 3

16

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

https://github.com/JoeWoodward/spree_helper_issue

我不确定这是否是正确的方法,但这是一种临时解决方法。

解决方案:

application_controller.rb输入以下内容:

require 'action_text'

class ApplicationController < ActionController::Base
  helper ActionText::Engine.helpers

  ...
end

文档helperhttps ://apidock.com/rails/AbstractController/Helpers/ClassMethods/helper

于 2019-08-29T17:24:16.597 回答
3

首先确保你在 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 行的此链接

于 2019-09-11T21:56:34.803 回答
1

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

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

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

灵感来自p8在已关闭的 Rails问题中的评论。

于 2021-07-15T17:28:46.733 回答