API-код неправильно отображает JSON с контроллера из Heroku - PullRequest
0 голосов
/ 11 января 2012

Я пытаюсь написать API-код, который использует JSON от контроллера.Я смог успешно получить желаемые результаты локально, но когда я нажимаю на Heroku, части моего JSON отображаются неправильно.

В контексте я пытаюсь создать вложенный JSON с информацией о еде (имя, id и т. д.) и URL-адреса фотографий.Локально URL-адреса фотографий отображаются в формате JSON.Однако на Heroku URL-адреса фотографий отображаются как нулевые.На Heroku я также протестировал только рендеринг URL-адреса JSON в одиночку, и он правильно получает URL-адреса.

Если вы знаете, почему он отображается правильно, а не на Heroku, пожалуйста, дайте мне знать.Спасибо

Я создаю свой JSON следующим образом:

def api
@meals = Meal.all
@urls = Hash.new
@return_val = Array.new

@sorted_meals = Meal.select('meals.name as meal_name, meals.id as meal_id, 
                            COALESCE(sum(meal_ratings.rating), 0) as meal_rating, 
                            restaurants.id as restaurant_id, restaurants.name as restaurant_name').
                    joins('LEFT JOIN meal_ratings ON meals.id = meal_ratings.meal_id 
                          LEFT JOIN restaurants ON restaurants.id = meals.restaurant_id').
                    group('meals.name, meals.id, restaurants.id, restaurants.name').
                    order('meal_rating DESC').all

@meals.each do |meal|
  unless meal.meal_photos.empty?
    @urls[meal.id] = {"thumb" => meal.meal_photos[0].photo.url(:thumb), "profile" => meal.meal_photos[0].photo.url(:profile)}
  end
end

@sorted_meals.each do |meal|
  @return_val.push("id" => meal.meal_id, "name" => meal.meal_name,
                   "rating" => meal.meal_rating, "restaurant" => meal.restaurant_name, 
                   "restaurant_id" => meal.restaurant_id, "urls" => @urls[meal.meal_id])
end

respond_to do |format|
  format.html # show.html.erb
  format.json { render json: @return_val } # render json: @url render json: @meals
end

end

1 Ответ

0 голосов
/ 12 января 2012

Проблема была из-за Postgres. Когда я запрашивал food_id, он возвращал строку и не работал как хеш-ключ, поэтому я получал ноль. После превращения строки идентификатора в int все работало нормально. Благодаря помощи Сены это было решено.

...