在过去的几年中,我有一个具有使用降价语言的属性的对象,最近该属性现在切换为使用html。如何使用标记语言呈现所有过去的广告系列描述,以及如何使用.html_safe
呈现所有新的广告系列描述Html_safe
<h6 class="text-muted" itemprop="description">
<%= @campaign.product_description.html_safe %>
</h6>
降价
<h6 class="text-muted" itemprop="description">
<%= Campaign::Format @campaign.product_description, {render_html: true} %>
</h6>
如何同时渲染两者?这样,对于所有旧广告系列,它将呈现标记,而对于新广告系列,则将呈现html。当我在同一行中包含html_safe和markdown时,它仅执行标记,而不执行WYSIWYG编辑器中的html。
答案 0 :(得分:1)
几个选项:
uses_html_description
。相应地设置其值。并在视图中打开它。在这两者之间,我会选择后者。
答案 1 :(得分:1)
我首先想到的是,我将回填数据库,将所有旧记录转换为新格式。
否则,请在app/helpers/application_helper.rb
中创建如下视图帮助器方法:
def description_text campaign
if campaign.created_at > Time.new(2019,3,1).in_time_zone
campaign.product_description.html_safe
else
Campaign::Format campaign.product_description, {render_html: true}
end
end
请注意,如果您更喜欢基于时间的内容,也可以实际上检测字符串中的HTML,例如:
def description_text text
if text.starts_with? "<html" # or whatever
# ...