Rails Rake任务:语法错误,意外' \ n',期待tASSOC

时间:2014-03-19 15:44:30

标签: ruby

我的rake任务中有这个代码:

variables[:hotels].push(
{
  :id => offering.ID,
  :name => offering.vendor.Name,
  :placing_name => offering.Name,
  My::Media::Account.find_by_guid(offering.VendorID).photos.each do |p|
    :hotel_images.push({
      :id => p.id,
      :image => p.image,
      :url => "http://m.website.com/uploads/photo/image/#{p.id}/#{p.image}"
    })
  end #there is an error
})

当我尝试运行它时,我在终端中收到错误syntax error, unexpected '\n', expecting tASSOC。它指向最后end。我在哪里弄错了?谢谢!

1 个答案:

答案 0 :(得分:4)

您无法在那里插入可执行代码。 Ruby希望看到你定义的哈希中的下一个键,而不是一串代码。您也不能push使用符号,:hotel_images.push({无法上班。

如果您希望:hotel_images映射到数组,则需要将键移到循环外部,并使用map代替each

variables[:hotels].push(
{
  :id => offering.ID,
  :name => offering.vendor.Name,
  :placing_name => offering.Name,
  :hotel_images => My::Media::Account.find_by_guid(offering.VendorID).photos.map do |p|
    {
      :id => p.id,
      :image => p.image,
      :url => "http://m.website.com/uploads/photo/image/#{p.id}/#{p.image}"
    }
  end
})

虽然这在语法上并不正确,但它会让你在表现方面感到悲伤。由于这似乎是在循环中发生的,因此您应该使用includes来包含photos关联,而您应该只选择您感兴趣的属性。