0

これはとても基本的な質問のように思えますが、私はそれを回避することはできません。DB からデータを取得し、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>

コントローラーがしなければならないのは、DB から場所を取得することだけです。

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