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

Ruby Rails Rake任务:语法错误,意外'\n';,期待tASSOC,ruby,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 =&

我的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
})

当我试图运行它时,我得到一个错误
语法错误,意外的'\n',期望终端中出现tASSOC
。它指向最后一个
结尾
。我在哪里犯了错误?谢谢

您不能在那里插入可执行代码。Ruby希望看到您正在定义的哈希中的下一个键,而不是一块代码。你也不能用那种方式把推到一个符号上,
:hotel\u images.push({
永远不会起作用

如果希望
:hotel_images
映射到数组,则需要将键移到循环外部,并使用
映射
,而不是使用
每个

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
})
虽然这在语法上不“正确”,但会导致性能方面的问题。因为这似乎是在循环中发生的,所以您应该使用
包含
来包含
照片
关联,并且您应该只选择感兴趣的属性