0

这似乎是一个基本的问题,但我无法绕过它。我从数据库中获取一些数据并将其作为 JSON 提供。在我将它作为 JSON 提供之前,我想为数组中的每个散列添加一个值。

@locations.each do |location|
  if location[:image].present?
    location[:convient_new_url_value] = 'http://site.com/#{location.image}.jpg'
  end
end 

但是,我似乎无法为哈希添加值。我采取了错误的方法吗?

** 抱歉 - 更多信息 **

@locations = Location.find(:all, :order => "created_at")

@locations.each do |location|

  if location[:image].present?
    location[:convient_new_url_value] = 'http://site.com/#{location.image}.jpg'
  end
end 

respond_to do |format|
  format.html
end

json 是在 HTML 模板中生成的:

<script>
    var location_data = <%= raw @locations.to_json() %>
</script>
4

1 回答 1

0

最简单的方法可能是在您的模型中创建一个方法convient_new_url_value并将其传递给to_json

class Location < ActiveRecord::Base
  ...
  def convient_new_url_value
    "http://site.com/#{self.image}.jpg" if self.image.present?
  end
end

<script>
  var location_data = <%= raw @locations.to_json(:methods => :convient_new_url_value) %>
</script>

您的控制器所要做的就是从数据库中获取位置:

@locations = Location.all.order(:created_at)
于 2013-02-27T15:43:36.887 回答