Rails 6 ActionText rich_text_area 正常工作,在布局中渲染时不会出现

Dan*_*gel 1 ruby ruby-on-rails trix ruby-on-rails-6 actiontext

我正在渲染一个使用 ActionText 输入 rich_text_area 的表单,它是 Trix WYSIWYG 富文本编辑器的 Rails 实现。它一直工作得很好,直到我开始重构我的视图以使用布局,其中表单内容可以产生不同的表单。表单呈现良好,除了rich_text_areas 之外,删除使其成为布局所需的代码可使其恢复正常。我的代码如下。

\n\n

我正在使用以下代码将表单呈现为部分形式:

\n\n
<%= stylesheet_link_tag "form" %>\n<%= form_with model: @family, class: "form-group" do |f| %>\n\n  <%= label_tag(:banner_image, \'Select a Banner Image\')%>\n  <%= f.file_field :banner_image%>\n  <br>\n  <br>\n\n  <%= label_tag(:zh_family_name, \'Chinese Family Name\') %>\n  <%= f.text_field :zh_family_name %>\n  <br>\n  <br>\n  <%= label_tag(:en_family_name, \'English Family Name\') %>\n  <%= f.text_field :en_family_name %>\n  <br>\n  <br>\n  <%= label_tag(:en_summary, \'Summary\') %>\n  <%= f.text_field :en_summary %>\n  <br>\n  <br>\n  <%= label_tag(:zh_summary, \'Summary Chinese\') %>\n  <%= f.text_field :zh_summary %>\n  <br>\n  <br>\n\n  <%= label_tag(:en_content, \'Content\') %>  \n  <%= f.rich_text_area :en_content_rt %>\n  <br>\n  <br>\n\n  <%= label_tag(:zh_content, \'\xe5\x86\x85\xe5\xae\xb9\') %>\n  <%= f.rich_text_area :zh_content_rt %>\n  <br>\n  <br>\n\n  <%= label_tag(:service_id, \'Select a related service\') %>\n  <%= f.collection_select(:service_id, Service.all, :id, :en_title) %>\n  <br>\n  <br>\n  <%= f.submit %>\n<% end %>\n
Run Code Online (Sandbox Code Playgroud)\n\n

它工作正常,富文本区域可见,并且可以在将此表单作为部分内容加载到 edit.html.erb 文件中时使用,如下所示:

\n\n
<%= render "partials/family_form" %>\n
Run Code Online (Sandbox Code Playgroud)\n\n

但我想将其渲染为名为“编辑器”的布局的一部分,因此我将 edit.html.erb 更改为:

\n\n
<% content_for :form do %>\n  <h1>Edit the <em><%= @family.en_family_name %></em> Testimonial </h1>\n\n  <%= render "partials/family_form" %>\n<% end %>\n
Run Code Online (Sandbox Code Playgroud)\n\n

添加render layout: \'editor\'到控制器中的编辑功能,并添加如下所示的布局:

\n\n
<!DOCTYPE html>\n<html lang="en">\n<head>\n  <meta charset="UTF-8">\n  <meta name="viewport" content="width=device-width, initial-scale=1.0">\n  <meta http-equiv="X-UA-Compatible" content="ie=edge">\n  <%= stylesheet_link_tag "editor" %>\n  <%= yield :head %>\n</head>\n<body>\n  <div class="main-container">\n    <div class="sidenav">\n      <%= render "partials/sidenav" %>\n    </div>\n    <div class="content">\n      <%= yield :form %>\n    </div>\n  </div>\n</body>\n</html>\n
Run Code Online (Sandbox Code Playgroud)\n\n

我认为我已经将范围缩小到render layout: \'editor\'问题根源的代码,因为直接将表单代码粘贴到 editor.html.erb 布局文件中会产生相同的错误:除了富文本区域之外,所有内容都呈现良好。

\n\n

我还没有在 Trix 存储库上看到此问题的报告,并尝试手动require \'action_text\'将 ActionText 帮助器添加到相关控制器,但无济于事。任何帮助将不胜感激,谢谢。

\n

小智 6

您是否action_text使用 Webpacker 或资产管道进行设置?如果您使用 Webpacker 设置它,您可能需要添加<%= javascript_pack_tag 'application' %> 如果您使用资产管道设置它,那么正如@MurifoX提到的,您可能需要<%= javascript_include_tag 'application' %>.