【问题标题】:Inner json objects not rendering Rails内部 json 对象不渲染 Rails
【发布时间】:2016-04-21 17:57:44
【问题描述】:

第一个模型:

class AdPlace < ActiveRecord::Base
  belongs_to :user
  has_many :user_ads, dependent: :destroy
  accepts_nested_attributes_for :user_ads, allow_destroy: true, reject_if: :all_blank

   def ad_places_json
    self.as_json(
    include: {
        user_ads: {

        }
    })
  end
end

第二个模型:

class UserAd < ActiveRecord::Base
  belongs_to :ad_place
end

从我的控制器中,我试图让所有 AdPlaces 都拥有所有 UserAds。 所以我的控制器方法如下:

 def get_ads
      ad_places = AdPlace.includes(:user_ads).where(user_id: @current_user.id)
      render json: {
          ad_places: ad_places.each {|ad| ad.ad_places_json},
          message: ['success']
      },
          status: :ok
    end

上述函数会呈现除 UserAds 之外的所有 AdPlaces。 服务器上的 SELECT 查询如下:

  User Load (0.3ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1  [["id", 7]]
  AdPlace Load (0.9ms)  SELECT "ad_places".* FROM "ad_places"
  UserAd Load (0.5ms)  SELECT "user_ads".* FROM "user_ads" WHERE "user_ads"."ad_place_id" IN (1, 8, 9, 10, 11, 12, 13)

一切对我来说似乎都很完美,我很困惑我在哪里犯错了。 谢谢。

【问题讨论】:

    标签: ruby-on-rails json ruby-on-rails-4


    【解决方案1】:

    each 更改为map

    ad_places.map {|ad| ad.ad_places_json} 
    

    Array#each vs. Array#map

    【讨论】:

      猜你喜欢
      • 2015-11-28
      • 2014-07-10
      • 2011-03-28
      • 1970-01-01
      • 2017-04-20
      • 2012-12-12
      • 1970-01-01
      • 2018-10-16
      • 1970-01-01
      相关资源
      最近更新 更多