我计划以标题,副标题,段落和表格数据的形式提供包含大量用户贡献文本的视图。现在我有标题,副标题和段落的单独模型,具有适当的belongs_to和has_many关系。在我看来,保存这些用户数据的更理想的解决方案就在那里。我正在寻找另一种工具来有效地将这些信息保存在数据库中。
非常感谢您的帮助。
class Fly < ActiveRecord::Base
has_many :headings
accepts_nested_attributes_for :headings, allow_destroy: true
end
class Heading < ActiveRecord::Base
belongs_to :fly
has_many :subheadings
accepts_nested_attributes_for :subheadings, allow_destroy: true
end
class Subheading < ActiveRecord::Base
belongs_to :heading
has_many :paragraphs
accepts_nested_attributes_for :paragraphs, allow_destroy: true
end
class Paragraph < ActiveRecord::Base
belongs_to :subheading
end
答案 0 :(得分:1)
您可以将内容存储为像Textile或Markdown这样的内容。您需要的只是每个文档的单个记录,而不是拥有一大块标题和副标题。标题,副标题和段落包含在纺织品或降价中。
在您的文档记录中,您将存储Textile或Markdown内容以及您关注的任何元数据。
有很多针对Textile和Markdown的引擎都会编译为html。当需要显示您的内容时,您需要做的就是将其提供给引擎并输出它给您的html。
如果您希望您的用户编写内容,您可以让他们直接写Markdown或Textile,或者使用某种生成纺织品或Markdown的生态友好工具。
Textile和Markdown都是非常简单的语言。用户应该很容易拿起它。
我做了一个快速的谷歌搜索,看起来像Markdown和纺织品的所见即所得的编辑确实存在。
答案 1 :(得分:0)
试试这个:
尝试使用ckeditor或tinymce是可随时使用的HTML文本编辑器,旨在简化Web内容创建。它是一个WYSIWYG编辑器,可将常用的文字处理器功能直接带到您的网页上。
要将它们与rails应用程序集成,请使用这些宝石ckeditor 或tinymce-rails。
答案 2 :(得分:0)
你的模特&#39;复杂性只是反映了像文档一样的内容结构。如果要查询内容的标题,副标题,段落和表格部分,则必须让模型/表格在这些部分之间进行区分和记录。 (事实上,你所提供的内容对于最小的标题 - 副标题 - 段落模型来说甚至不够复杂。例如,标题下的段落和标题下的副标题各有一个相关的序数位置。)
即使您对内容使用非关系表单,如果要在部分之间进行区分,则接口运算符和托管状态必须反映该结构。 请记住&#34;文件&#34;在XML,HTML,Word或noSQL意义上是通用的。如果您的应用程序具有标题,子标题,段落和表格的特定结构,那么您将不得不通过声明框架来描述该结构,就像&#34; messy&#34;但是用不同的语法。
每个关系模型/表都有一个关联的参数化语句。例如&#34;标题[标题]的#[no]段有段落文本[text]&#34;。当字段/列值替换参数名称时,模型/表保存形成true语句的记录/行。例如记录/行&lt;没有7,标题&#39; 5.1&#39;,文字&#39; ...&#39; &GT;给出标题&#39; 5.1&#39;第7段。有文字&#39; ...&#39; &#34 ;.关系数据库中唯一的非特定于应用程序的结构是其模型/表,其内容枚举描述应用程序的事实。
我无法建议宝石来利用之前的工作。但架构示例就在那里。 Eg these documents with section titles, section texts and images.