【问题标题】:save json block of code into nested model ruby rails将 json 代码块保存到嵌套模型 ruby​​ rails
【发布时间】:2017-12-31 02:21:41
【问题描述】:

我从get_connection 得到一个带有 koala gem 的结果哈希,看起来像这样

=> [{"album"=>{"created_time"=>"2011-05-07T23:06:33+0000", "name"=>"Timeline Photos", 
"id"=>"10150170707957371"}, "images"=>[{"height"=>1150, "source"=>"https://scontent.xx.fbcdn.net/v/t31.0-8/24173690_10155086191327371_1463889654041392146_o.jpg?oh=8adec503c6066dc20d1be5d71262a03e&oe=5AFEED4A",
"width"=>2048}, {"album"=>{"created_time"=>"2011-05-07T23:06:33+0000", "name"=>"Timeline Photos", 
"id"=>"10150170707957371"}, "images"=>[{"height"=>1188, "source"=>"https://scontent.xx.fbcdn.net/v/t31.0-8/24302317_10155086179077371_4000719398736973936_o.jpg?oh=6eba399a4067b847cb38ef245e687321&oe=5AFC195A", 
"width"=>2639}]}]

我希望像 rails 那样使用 params 哈希保存照片,但我意识到它只会为每张带有 do 块的照片创建一个图库。

def photos(user)
  photos = user.facebook.get_connection("me", "photos?fields=album,images,event,height,width,link,place&type=uploaded")
    photos.each do |photo|
      params = { gallery: {
      name: 'Facebook Pictures', pictures_attributes: [
      { fb_album_created_time: photo['album']['created_time'],
        fb_album_name: photo['album']['name'],
        fb_album_id: photo['album']['id'],
        fb_source: photo['images'][0]['source'],
        fb_height: photo['images'][0]['height'],
        fb_width: photo['images'][0]['width'],
        fb_link: photo['link'],
        fb_pic_id: photo['id'] }
        ]
      }
    }
    gallery = user.galleries.new(params[:gallery])
    gallery.save!
  end     
end

如何执行我的嵌套图片属性,以便将它们保存到一个画廊。甚至可以帮助我的宝石。我正在查看 rails/jbuider gem,但不确定没有 gem 是否更容易?

【问题讨论】:

  • 您有UserGalleryPicture 型号吗? Gallery 模型有很多图片并接受它们的嵌套属性吗?
  • 是的,一切都正确保存。我只是在看 jbuilder gem,它说你可以提取属性,所以只需检查 atm。

标签: ruby-on-rails json ruby jbuilder


【解决方案1】:

用 Jbuilder 解决了这个问题。

def to_jbuilder
  Jbuilder.new
end

def photos(u)
  json = to_jbuilder
  first_page_photos = u.facebook.get_connection("me", "photos?fields=album,images,event,height,width,link,place&type=uploaded")
  photos = json.photo first_page_photos do |photo|
    json.fb_album_created_time photo['album']['created_time']
    json.fb_album_name photo['album']['name']
    json.fb_album_id photo['album']['id']
    json.fb_source photo['images'][0]['source']
    json.fb_height photo['images'][0]['height']
    json.fb_width photo['images'][0]['width']
    json.fb_link photo['link']
    json.fb_pic_id photo['id']
  end
  params = { gallery: { name: 'Facebook Pictures', pictures_attributes: photos }}
  gallery = u.galleries.new(params[:gallery])
  gallery.save!
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2017-02-02
    • 1970-01-01
    相关资源
    最近更新 更多