【发布时间】:2023-03-18 15:05:02
【问题描述】:
在学习 Rails 时,我正在从头开始构建博客,但遇到了一个问题:在我的 Post 模型中,我有一个表单,发帖人可以在其中添加标题、类别标签和帖子入口。这些都作为字符串添加到表中。
这就是事情变得棘手的地方。与任何博客文章一样,entry(文章的实际文本)字符串可能会有多个句子。出于这个原因,当我在视图中循环 Entry 内容时,它会将帖子显示为一个文本块,我这样做是这样的:
<% @posts.each do |post| %>
<div class="row">
<h2><%= post.title %></h2>
By <h7><%= post.author %></h7> at <h7><%= post.published_at %></h7>
<p id="paragraph"><%= post.entry %></p>
<% end %>
所以从技术上讲,内容正在显示:它有一个标题、帖子信息和条目,但是entry 的这个长文本块看起来很糟糕。
我想做的是能够将<p><%= post.entry %></p> 拆分为多个段落,假设我自己制作了降价并在提交文本时放置# 以指示新段落。
我找到了this old post,它在拆分数组方面几乎是完美的,除了它需要您设置有限数量的迷你字符串(就像应该从原始字符串中切出 3 个字符串一样)。
由于其中一些博客文章最终可能有 2、3、4 等段落,因此我需要一个能够正确格式化的解决方案。
我看到了两种可能的解决方案,这是我的问题:
1) 设置Post 表是否有比为帖子内容设置一个长字符串更好的格式?
2) 如果没有,当字符串实际呈现在视图中时,我该怎么做才能使字符串从样式角度更易于管理?
可能的问题
1.为什么不直接使用 Gem? 这是公平的。我想尝试或多或少地从头开始制作这个项目,以供我自己学习,因为我是新手。这就是为什么我想尝试构建 Post 模型并制作一个用于提交条目的直观 UI。
2.我可以看看迁移文件的样子吗?
class CreatePosts < ActiveRecord::Migration
def change
create_table :posts do |t|
t.string :category
t.string :title
t.datetime :published_at
t.integer :user_id
t.string :author
t.string :entry
t.timestamps null: false
end
end
end
【问题讨论】:
-
段落的定义(大致)是“几个相关的句子”。这种关系是语义的,而不是技术的。也就是说,您如何根据“正确格式”定义段落?这种区别可能看起来很迂腐,但它对你的用户很重要,所以对你也很重要。
-
通常你会对内容使用markdown之类的东西,然后你会用github.com/vmg/redcarpet之类的东西来渲染它
-
@MarsAtomic,是的,好点。当我说段落时,我的字面意思是“进入多个
元素”。我的推理 - 显然有更复杂的样式 - 但这会在呈现时破坏文本。因此,如果我想要三个文本块,渲染为三个
元素将是一个好的开始。目前,它只能作为一个来做。
标签: ruby-on-rails