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



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

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

然后我意识到它需要Rails6webpacker以及活动存储。更改我的gemfile的Rails版本和运行Rails升级都不起作用,所以我添加了webpacker和活动存储gem,并将其与我当前的5.2.1版本捆绑在一起。这也没用。

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

参考我的源代码

  • GitHub:https://github.com/Curting/mydanceplan
  • Heroku:https://mydanceplan.herokuapp.com/

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

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

可用轨道5.1+

rails new myapp --webpack

或者将其添加到您的Gemfile:

Gemfile

gem 'webpacker', '~> 4.x'

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

gem 'webpacker', git: 'https://github.com/rails/webpacker.git'
yarn add https://github.com/rails/webpacker.git

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

gem'actiontext',github:'kobaltz/actiontext',branch:'archive',require:'action_text'
gem 'image_processing'

最后,运行以下程序来安装Webpacker:

bundle
bundle exec rails webpacker:install
rails action_text:install
rails db:migrate
brew install imagemagick vips

将其添加到头部的视图/布局/应用程序中

#layouts/application.html.erb
<%= javascript_pack_tag 'application' %>

在你的模型中,它可能是一篇文章或你的模型中的任何东西

class Article < ApplicationRecord
has_rich_text :content
end

在您的控制器中

#controllers/articles_controller.rb
def article_params
params.require(:article).permit(:name, :content)
end

在您的表格中

#_form.html.erb
<div class="field">
<%= form.label :content %>
<%= form.rich_text_area :content %>
</div>

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

<h1><%= @article.name %></h1>
<p><%= @article.content %></p>

可选:要修复"未满足的对等依赖关系"警告,

yarn upgrade

你可以在这里观看完整的视频:https://www.driftingruby.com/episodes/using-action-text-in-a-rails-5-2-application

我给你一个部分答案!我想使用Trix、Rails 5.2.2和Webpacker,但找不到明确的答案。trix-gem不起作用,因为我根本不使用资产管道。(我也使用Turbolinks和Stimulus,到目前为止,这与它们一起运行得很好。(

我用把一个解决方案串在一起

  • trix节点包
  • 自定义表单标记帮助程序,源自此Stack帖子

我现在可以使用这样的表单助手(使用Slim模板语言(:

= f.trix :personal_notes, class: 'some-css-class'

为了到达那里,我做了以下事情:

  1. yarn add trix
  2. 在我的Javascript包中,import 'trix';
  3. 在我的CSS包中,@import '~trix/dist/trix';
  4. 然后我创建了表单助手。下面是它的样子:

app/helpers/application_helper.rb中,我根据上面链接的Stack帖子添加了新的表单助手。我的文件现在看起来像这样:

module ApplicationHelper
# ...
class ActionView::Helpers::FormBuilder
# include ActionView::Helpers::TagHelper # I didn't need this.
include ActionView::Helpers::FormTagHelper
include ActionView::Helpers::FormOptionsHelper
# include ActionView::Helpers::CaptureHelper  # I didn't need this.
# include ActionView::Helpers::AssetTagHelper  # I didn't need this.
# since these tag helpers just return strings, it is easy to make a pretty 
# powerful helper.  It is probably possible to use existing Rails form 
# helpers to aid this as well.
def trix(method, options = {})
value = (@object[method].empty?) ? '' : "value='#{@object[method]}'" 
return "<input id='#{field_id(method)}' type='hidden' name='#{field_name(method)}' #{value}><trix-editor input='#{field_id(method)}' class='trix-content #{options[:class]}'></trix-editor>".html_safe
end
def field_name(label,index=nil)
return @object_name + "[#{label}]"
end
def field_id(label,index=nil)
return @object_name + "_#{label}"
end
end
end

重新启动Rails。似乎对我有用。

相关内容

  • 没有找到相关文章

最新更新