繁体   English   中英

Blueprinter gem - 渲染 STI 集合

Blueprinter gem - render STI collection

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试使用新的序列化替代方法: Blueprinter

您如何处理每个模型都是某种类型的视图的 STI 集合?

我想出了这样的东西(在 AMS github 问题上看到了类似的代码):

def serialize_cards(cards)
  cards.group_by(&:type).map do |type, cards|
    case type
    when 'TypeOneCard' then Api::V1::CardBlueprint.render(cards, view: :one)
    when 'TypeTwoCard' then Api::V1::CardBlueprint.render(cards, view: :two)
    else  raise ArgumentError, "Unhandled event type '#{type}'"
    end
  end
end

为什么在带有反斜杠的字符串中输出:

[
    "[{\"id\":27566,\"attachment\":null,\"avatar\":null,\"card_comments_count\":0,\"card_likes_count\":0,\"card_publisher\":\"group\",\"created_at\":\"2020-11-18T10:24:42.195+01:00\",\"description\":\"Ted, how many times have I told you to put the lid back on the peanut butter jar?! It’s this inconsiderate, immature jackassery that makes me feel like I’m living in The Real World House! And not the early days when they all had jobs and social consciences, I’m talking about Hawaii, and after!\",\"ends_at\":\"2021-02-06T23:55:00.000+01:00\",\"event_attendees_count\":0,\"group_name\":\"Cheeseburger - Herbes de Provence\",\"origin\":\"http://localhost:3000/dorfplatz/3\",\"origin_name\":\"Dardagny - Athenaz (Avusy)\",\"picture\":null,\"starts_at\":\"2020-11-21T00:00:00.718+01:00\",\"title\":\"The Doors\",\"type\":\"EventCard\",\"updated_at\":\"2020-11-19T10:25:49.467+01:00\",\"user_full_name\":\"Carolann Ritchie\"},{\"id\":28163,\"attachment\":null,\"avatar\":null,\"card_comments_count\":0,\"card_likes_count\":0,\"card_publisher\":\"group\",\"created_at\":\"2020-11-14T23:22:42.059+01:00\",\"description\":\"That’s life, you know, we never end up where you thought you wanted to be.\",\"ends_at\":\"2020-12-05T23:55:00.000+01:00\",\"event_attendees_count\":0,\"group_name\":\"Cheeseburger - Herbes de Provence\",\"origin\":\"http://localhost:3000/dorfplatz/3\",\"origin_name\":\"Dardagny - Athenaz (Avusy)\",\"picture\":null,\"starts_at\":\"2020-11-14T00:00:00.942+01:00\",\"title\":\"Iron Maiden\",\"type\":\"EventCard\",\"updated_at\":\"2020-11-19T10:25:59.622+01:00\",\"user_full_name\":\"Reuben Kertzmann\"},{\"id\":24658,\"attachment\":null,\"avatar\":null,\"card_comments_count\":0,\"card_likes_count\":0,\"card_publisher\":\"group\",\"created_at\":\"2020-11-14T14:40:45.442+01:00\",\"description\":\"You can’t just skip ahead to where you think your life should be.\",\"ends_at\":\"2021-02-04T23:55:00.000+01:00\",\"event_attendees_count\":0,\"group_name\":\"Cheeseburger - Herbes de Provence\",\"origin\":\"http://localhost:3000/dorfplatz/3\",\"origin_name\":\"Dardagny - Athenaz (Avusy)\",\"picture\":null,\"starts_at\":\"2020-11-19T00:00:00.811+01:00\",\"title\":\"Steely Dan\",\"type\":\"EventCard\",\"updated_at\":\"2020-11-19T10:24:58.452+01:00\",\"user_full_name\":\"Reuben Kertzmann\"}]",
1 个回复

使用render_to_hash而不是将每个序列化程序输出为 JSON

def serialize_cards(cards)
  cards.group_by(&:type).map do |type, cards|
    case type
    when 'TypeOneCard' 
      Api::V1::CardBlueprint.render_to_hash(cards, view: :one)
    when 'TypeTwoCard' 
      Api::V1::CardBlueprint.render_to_hash(cards, view: :two)
    else  
      raise ArgumentError, "Unhandled event type '#{type}'"
    end
  end
end
4 Blueprinter 不返回模型定义的方法

使用 blueprinter gem 仅返回列定义的属性。 任何返回实例方法或重命名关联的尝试都不起作用。 蓝图中定义的字段/关联不会在 JSON 中返回,也不会在类中定义的任何方法中返回。 例如。 class UserBlueprint < BlueprinterBase ident ...

5 Rails 4-从公共部分渲染STI模型

我有这样的STI模型: Photo < Medium和Video < Medium 。 在某个地方,我想向他们展示: render搜索albums/_photo或albums/_video部分内容: 现在,我想制作一个模板,以在app/views/albums/sh ...

6 Rails渲染子动作gem

这是我的Rails问题。 有时,页面上存在独立的块(例如“最新新闻”),这些块与当前的控制器或动作没有逻辑关系。 在常规的MVC堆栈中,我将在控制器中编写@news = News.latest并render 'shared/latest_news', news: @news 。 但是, ...

7 渲染集合的集合-ItemsControl

我有一个如下的对象模型: 我将组绑定到一个itemscontrol,如下所示: 我有用于渲染它们的datatemplate。 如何使联系人显示在项目控件中? 联系人是每个组内的集合,而我的视图模型具有组的集合。 为了使其更加复杂,我为不同的联系人使用了不同的数据模板, ...

2013-07-08 10:11:36 1 284   wpf
9 渲染集合不是渲染集合中的所有项目吗?

这似乎非常基础,所以我不确定自己做错了什么。 我有一个@videos集合(调试@ videos.count显示为4),但是<%= render @videos %>仅呈现4个项目中的2个。 这是控制器方法(VideosController): 并且上述<%= ren ...

10 在Rails的集合中渲染集合

这让我发疯,我认为这应该是很简单的事情,但是我整天都在努力找出问题,却一无所获。 我到处都在看,有些东西我一定很想念。 我想在集合的一部分内渲染集合的一部分。 例如。 我有一些entries要在我的feed部分呈现,我希望feed来自feeds的集合,以便页面显示所有提要中的所有 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM