Rails:如何在 Rails 5.2.1 中实现 Action Text?

Oli*_*ing 0 ruby wysiwyg ruby-on-rails rich-text-editor trix

我在将Action Text gem实施到我的Rails 5.2.1应用程序时遇到了困难。

我遵循了安装指南,富文本编辑器不会出现在我的 _form 视图中。

然后我意识到它需要带有webpackeractive storage 的Rails 6。更改我的 gemfile 的 Rails 版本并运行rails upgrade不起作用,所以我添加了 webpacker 和 active storage gems 并将其与我当前的 5.2.1 版本捆绑在一起。那也没有用。

我真的很想在我的应用程序中有一个富文本编辑器。它不一定是 Trix 编辑器,但由于它是 v6 的原生编辑器,我认为这是显而易见的选择。

参考我的源代码

cer*_*emy 5

完美的选择,在我使用 rails 5.2.3 的新应用程序上进行了测试。请不要操作文本需要 ruby​​ 2.5.3 以上。第一:添加webpacker

您可以使用新的 --webpack 选项在设置新的 Rails 5.1+ 应用程序期间添加 Webpacker:

可用的 Rails 5.1+

rails new myapp --webpack
Run Code Online (Sandbox Code Playgroud)

或者将其添加到您的 Gemfile 中:

文件

gem 'webpacker', '~> 4.x'
Run Code Online (Sandbox Code Playgroud)

或者,如果您更喜欢使用 master

gem 'webpacker', git: 'https://github.com/rails/webpacker.git'
yarn add https://github.com/rails/webpacker.git
Run Code Online (Sandbox Code Playgroud)

现在使用图像魔法将 Actiontext 添加到您的 gem 文件中:

gem'actiontext',github:'kobaltz/actiontext',branch:'archive',require:'action_text'
gem 'image_processing'
Run Code Online (Sandbox Code Playgroud)

最后,运行以下命令安装 Webpacker:

bundle
bundle exec rails webpacker:install

rails action_text:install
rails db:migrate
brew install imagemagick vips
Run Code Online (Sandbox Code Playgroud)

将此添加到您的视图/布局/应用程序的头部部分

#layouts/application.html.erb
<%= javascript_pack_tag 'application' %>
Run Code Online (Sandbox Code Playgroud)

在您的模型中,它可能是文章或模型中的任何内容

class Article < ApplicationRecord
  has_rich_text :content
end
Run Code Online (Sandbox Code Playgroud)

在你的控制器中

 #controllers/articles_controller.rb
    def article_params
      params.require(:article).permit(:name, :content)
    end
Run Code Online (Sandbox Code Playgroud)

以你的形式

#_form.html.erb
<div class="field">
  <%= form.label :content %>
  <%= form.rich_text_area :content %>
</div>
Run Code Online (Sandbox Code Playgroud)

最后在您的视图中显示内容;

<h1><%= @article.name %></h1>
<p><%= @article.content %></p>
Run Code Online (Sandbox Code Playgroud)

可选:要修复“未满足的对等依赖项”警告,

yarn upgrade
Run Code Online (Sandbox Code Playgroud)

您可以在此处观看完整视频:https : //www.driftingruby.com/episodes/using-action-text-in-a-rails-5-2-application

  • 欢迎提供解决方案的链接,但请确保您的答案在没有它的情况下也有用:[在链接周围添加上下文](//meta.stackexchange.com/a/8259) 这样您的其他用户就会知道它是什么以及为什么它在那里,然后引用您链接到的页面中最相关的部分,以防目标页面不可用。[仅是链接的答案可能会被删除。](//stackoverflow.com/help/deleted-answers) (2认同)