使用表单助手在 Rails 的预填充文本区域中保留换行符

Posted

技术标签:

【中文标题】使用表单助手在 Rails 的预填充文本区域中保留换行符【英文标题】:Preserve newlines in pre-populated textarea in Rails using form helpers 【发布时间】:2014-06-12 11:44:18 【问题描述】:

假设你有这个:

<%= form_for post, remote: true do |f| %>
  <!-- some other fields -->

  <%= f.label :content %>
  <%= f.text_area :content %>

  <%= f.submit %>
<% end %>

我在使用post.content.gsub(/\n/, "&lt;br /&gt;") 显示content 时轻松解决了问题,但是在我编辑帖子的content 时,textarea 完全忽略了换行符(因为无法在@ 上运行gsub 987654327@).

因此,具有多个段落的长文本完全失去了换行符。

我发现了很多这样的问题,但从来没有专门针对这种情况。

【问题讨论】:

试试f.text_area :content, value: do_your_gsub 啊,我没想到。但是,当我使用post.content.gsub(/\n/, "&lt;br /&gt;") 时,它只是在换行符处显示文字字符串&lt;br /&gt;,而不是换行。 【参考方案1】:

好的,所以解决方案非常简单。感谢 apneadiving 引起我的注意,我可以简单地添加 value: post.content 以手动将帖子的内容填充到 textarea 字段,这使我可以对其进行操作。

这解决了我的问题:

<%= f.text_area :content, value: post.content.gsub(/\n/, '\n') %>

【讨论】:

我将post.content.gsub(/\n/, '\n') 更改为(post.content || "").gsub(/\n/, '\n'),因为我在使用新帖子的表单时遇到错误(内容为空白/无)。

以上是关于使用表单助手在 Rails 的预填充文本区域中保留换行符的主要内容,如果未能解决你的问题,请参考以下文章

点击按钮后在两个文本区域中添加新行并用文本填充它们

在联系表单文本区域中获取换行符以显示在电子邮件中

如何在表单文本区域中添加变量

使用 php 读取文件时删除文本区域中的换行符

我可以在浏览器的表单/文本区域中更改闪烁的插入符号吗? [复制]

获取文本区域中的光标位置