我正在为已经存在的网站修改种子文件。
表I中的其中一个字段是文本区域。
我想格式化我在种子文件中输入的信息,因此我不必在网站上手动更改它。
目前,种子文件中的条目如下所示
if !Store.exists?(:title => 'store Cavan')
Store.create(
opening_hours: 'Mon. to Fri. 8:30 - 9:00PM
Saturday 8:30 - 7:00 PM
Sunday 11:00 - 7:00 PM',
latitude: 53,
longitude: -7,
title: 'test store Cavan',
street_line_one: 'test Retail Park',
street_line_two: 'test Road',
town: 'Cavan',
county: 'Cavan',
country: 'Ireland')
当我运行rake db:seed时,会出现在这样的信息框中
Mon. to Fri. 8:30 - 9:00PMSaturday 8:30 - 7:00 PMSunday 11:00 - 7:00 PM
而不是这个
Mon. to Fri. 8:30 - 9:00PM
Saturday 8:30 - 7:00 PM
Sunday 11:00 - 7:00 PM
我尝试添加' \ n'在那里和" \ n"但这打破了我的网站。我知道这只是一个小问题,但我想知道如何在运行种子时保留某种格式,在这种情况下,每次显示后都会显示一个新行。
非常感谢任何帮助,谢谢。
答案 0 :(得分:3)
\n
肯定会奏效。我不确定您是如何使用\n
的,但它并不适合您。
通过添加create
更改您的\n
方法调用,如下所示:
Store.create(
opening_hours: 'Mon. to Fri. 8:30 - 9:00PM\nSaturday 8:30 - 7:00 PM\nSunday 11:00 - 7:00 PM',
latitude: 53,
longitude: -7,
title: 'test store Cavan',
street_line_one: 'test Retail Park',
street_line_two: 'test Road',
town: 'Cavan',
county: 'Cavan',
country: 'Ireland')
<强>更新强>
根据聊天会话。 OP选择将完整的代码在html中添加到种子文件中以获得正确的格式。
答案 1 :(得分:0)
我会用heredoc做到这一点:
opening_hours = <<-END.gsub(/^\s*/, '')
Mon. to Fri. 8:30 - 9:00 PM
Saturday 8:30 - 7:00 PM
Sunday 11:00 - 7:00 PM
END
=> "Mon. to Fri. 8:30 - 9:00 PM\nSaturday 8:30 - 7:00 PM\nSunday 11:00 - 7:00 PM\n"
您可以在开幕END
后使用您喜欢的任何方法,例如ruby-dedent删除缩进(如果你不喜欢正则表达式)。结束END
不必位于该行的开头,开头-
前面的END
表示结束END
前面的所有空格应该被忽略。
在你的情况下:
Store.create(
latitude: 53,
longitude: -7,
title: 'test store Cavan',
street_line_one: 'test Retail Park',
street_line_two: 'test Road',
town: 'Cavan',
county: 'Cavan',
country: 'Ireland',
opening_hours: <<-END.strip_heredoc
Mon. to Fri. 8:30 - 9:00 PM
Saturday 8:30 - 7:00 PM
Sunday 11:00 - 7:00 PM
END
)
strip_heredoc
附带ActiveSupport,并在此处生成与gsub
相同的结果。
heredoc必须是分配的最后一个属性,因为根据我的知识,没有办法让关闭END
和逗号在同一行。
Heredocs只是在源代码中嵌入格式化数据的一种非常好的方式 - 而Ruby特别支持它。谷歌吧!