0

我需要在文件.yml中將字符串拆分爲兩行或三行。問題是,如果我試圖分裂成兩行觸發一個錯誤的最後一個字段描述, 所以我把它一個行在文件.yml中將字符串拆分爲兩行

one: 
    id: 1 
    bus_company_id: 2 
    seat_type_id: 1 
    description: Butacas 120º de inclinación, 
        calefacción y aire acondicionado, música funcional y video. 

two: 
    id: 2 
    bus_company_id: 2 
    seat_type_id: 2 
    description: Butacas de cuero y paño 120º de reclinación, bandeja de apoyo 
    para pies, calefacción y aire acondicionado, música funcional y video. 

three: 
    id: 3 
    bus_company_id: 2 
    seat_type_id: 4 
    description: Butacas extra ancho de cuero y paño 150º de reclinación, bandeja de apoyo para pies, 
    desayuno, almohada y frazada, sistema de DVD y MP3. 

four: 
    id: 4 
    bus_company_id: 2 
    seat_type_id: 5 
    description: Butacas de cuero 180º reclinación, bandeja de apoyo para pies de 180º de reclinación, cortina divisoria, almohada y frazadas sonido sourround, sistema de DVD y MP3, aire y calefacción, menú a elección de carne, pollo o verdura para su cena. 

這個錯誤被觸發。

[email protected]:~/ProyectoTicketMaster/TicketMaster$ rake db:seed 
rake aborted! 
ActiveRecord::Fixture::FormatError: a YAML error occurred parsing /home/fernando/ProyectoTicketMaster/TicketMaster/test/fixtures/bus_seat_types.yml. Please note that YAML must be consistently indented using spaces. Tabs are not allowed. Please have a look at http://www.yaml.org/faq.html 
The exact error was: 
    Psych::SyntaxError: (<unknown>): could not find expected ':' while scanning a simple key at line 27 column 3 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/fixtures/file.rb:43:in `rows' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/fixtures/file.rb:29:in `each' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/fixtures.rb:670:in `block (2 levels) in read_fixture_files' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/fixtures/file.rb:20:in `open' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/fixtures.rb:669:in `block in read_fixture_files' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/fixtures.rb:668:in `each' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/fixtures.rb:668:in `read_fixture_files' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/fixtures.rb:548:in `initialize' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/fixtures.rb:482:in `new' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/fixtures.rb:482:in `block (2 levels) in create_fixtures' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/fixtures.rb:479:in `map' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/fixtures.rb:479:in `block in create_fixtures' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:232:in `disable_referential_integrity' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/fixtures.rb:476:in `create_fixtures' 
/home/fernando/ProyectoTicketMaster/TicketMaster/db/seeds.rb:15:in `<top (required)>' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activesupport-3.2.19/lib/active_support/dependencies.rb:245:in `load' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activesupport-3.2.19/lib/active_support/dependencies.rb:245:in `block in load' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activesupport-3.2.19/lib/active_support/dependencies.rb:236:in `load_dependency' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activesupport-3.2.19/lib/active_support/dependencies.rb:245:in `load' 
/home/fernando/.rvm/gems/[email protected]_master/gems/railties-3.2.19/lib/rails/engine.rb:525:in `load_seed' 
/home/fernando/.rvm/gems/[email protected]_master/gems/activerecord-3.2.19/lib/active_record/railties/databases.rake:347:in `block (2 levels) in <top (required)>' 
Tasks: TOP => db:seed 
(See full trace by running task with --trace) 
[email protected]:~/ProyectoTicketMaster/TicketMaster$ 

回答

1

我想你想使用here描述的換行符格式。看起來你有兩種選擇,下面是一個使用「>」符號放在一起的簡單例子。

parse.rb文件位置:

require 'yaml' 
foo = YAML.load_file('foo.yaml') 
puts foo 

這裏是YAML文件的內容:

one_line: one line of text 
two_lines: 
> 
this is a couple lines of text 
here we go... 
final_line: final line of content 

當你通過命令行與ruby parse.rb運行它,你會得到下面的輸出:

{"one_line"=>"one line of text", "two_lines"=>"this is a couple lines of text here we go...\n", "final_line"=>"final line of content"} 

希望這是有道理的。我想你只需要添加「>」並將文本移動到下一行。

+0

我學到了一些新東西。非常感謝oraserrata – 2014-12-03 03:57:28