问题标签 [active-model-serializers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 在 Active_model_serializers 中访问 doorkeeper_token(或 current_user)
我正在研究用RocketPants制作的 Rails API 。对于 JSON 序列化,我使用active_model_serializers,对于 OAuth- Doorkeeper。
问题在于current_user
在 class UserSerializer < ActiveModel::Serializer
. 错误:
current_user
助手使用这个片段:
并且doorkeeper_token
是:
所以我发现,request
在Serializer
. 我怎样才能使它可访问?还是应该有其他方式来实施current_user
?
提前致谢
ruby-on-rails - 活动模型序列化器中的资产管道
我试图通过包含 ActiveView::Helpers 在我的模型序列化程序输出中包含图像资产管道 url:
结果/images/posts/{id}
不是资产管道路径的有效路径,即。/assets/images/posts/{id}
. 如何在我的序列化程序输出中包含有效的资产管道路径?
ruby-on-rails - Ember-Data beta 3 并保存 hasMany 关系和 Rails 的另外一条记录
我正在使用 Rails 4、Ember 1.2.0 和 Ember Data 1.0.0-beta.3和DS.ActiveModelSerializer。
我无法保存具有“有很多”关系的新记录。应该创建两个模型记录,但只能由一个 POST 请求创建。
我有 2 个模型,如下所示:
我的新路线创建支持案例和支持案例按摩:
我的新表单是这样的:(不知道能不能更简单的绑定一个子属性?)
控制器中的“创建”操作:
对服务器的POST请求仅发送“支持案例”!!
如何发送附加记录“支持案例消息”和关系?
ruby-on-rails - RocketPants 和 ActiveModelSerializers 自定义序列化器
妈的,又是我……
RocketPants
来自git的引用:
支持
active_model_serializers
- 如果您想使用 ActiveModelSerializers,我们会处理它。更好的是,在您的公开调用中,:serializer
按预期通过,我们会自动为您调用它。
所以这就是我尝试做的:
这就是我在以下位置实现序列化程序的方式user_serializer.rb
:
expose
不带serializer
选项使用是根据UserSerializer
. 尝试使用UserJustNameSerializer
会出现此错误:
所以问题是:如何正确地显示RocketPants
我的序列化器的方式?现在它试图在 UsersController 中找到它。
ruby-on-rails - 与 ember.js 概念作斗争 - 大量数据
我正在考虑将 Ember.js 用于新的 Rails 支持的应用程序(使用 Active Model Serializers)。我正在努力理解这个框架,所以这可能是一个新手问题。
我的数据结构是这样的(简化):
在“活动日”内可能有数千个活动(在一个活动内有数十名参与者及其所有数据)。
似乎“错误”的是,当我想获取事件日列表时,我加载了一些 JSON,其中不仅包含 EventDays,还包含所有事件(然后是其中所有内容的所有数据)......基本上,它会加载整棵树!
我认为我可以通过对操作使用自定义序列化程序来解决这个问题,但是,在某些时候我需要获取数据,而 Ember 似乎再也不会调用服务器了。
因此,如果我加载 EventDays 并且其中没有事件数据,则当我单击“显示”方法时,Ember 永远不会调用服务器来更新 EventDay 对象。
我不知道我在这里是否清楚。我希望在这方面领先于我的人能够理解我在做什么!
真的,我认为它归结为2个问题:
1)如何正确过滤请求信息,以便只填写本地对象(即在调用索引方法时我需要一个没有孩子的事件日列表,但在调用显示方法时我需要一个活动日充满了下一个级别)
2) 如何让 Ember 在适当的时候“重新加载”一个对象以填写适当的内容
也许我看错了 - 错过了像 Ember 这样的东西 - 如果是这样,我欢迎指向适当教程的指针,但我找不到任何东西(即使在 Ember 网站上)解释除了加载整个文件之外如何做任何事情一下子树。使用 Gigs 数据,这似乎很慢,绝对是浏览器杀手,而且完全是错误的。
感谢 StackOverflow 兄弟帮助我学习!
编辑
由于某种原因我立即被否决了,我将添加代码:
客户端:
服务器端:
编辑 2
在 kertap 的建议之后,我添加了 async 属性并更新了上面的序列化程序代码。
json在这里:
值得注意的是,如果我不使用key: :events
序列化程序中的参数,事情会返回为"event_ids": [1,2,3,4]
which,您会认为是正确的,但会导致 Ember 看不到事件。
另外值得注意的是,如果我这样做:
然后什么都不起作用!我明白了Error while loading route: Error: Assertion Failed: The response from a findAll must be an Array, not undefined
我真的不认为让 Ember 和 Rails 的基本接线工作起来这么难......
ruby-on-rails - 主动模型序列化器和自定义 JSON 结构
我正在尝试将 Active Model Serializer gem 与我的 API 一起使用,尽管我正在努力解决我认为非常简单的事情。
我所有的 JSON 响应都采用包装格式,每个响应都具有顶级消息和状态属性,数据位于内容属性中。每个 JSON 响应都遵循这种格式。
例子
“内容”属性的内容是我想放置序列化程序输出的地方。我的文章列表等。
我无法弄清楚如何做到这一点?
任何帮助将不胜感激。
json - 渲染 json 时没有调用 ActiveModel::Serializer?
我正在尝试在 Rails 4.0.0 中使用 active_model_serializers 来序列化我的 json 响应。但是,当我使用 AMS 类时,似乎根本没有被调用/使用
我不确定是否存在一些配置问题,或者我是否错误地使用了命名空间。
Gemfile 有:
控制器(在 app/controllers/api/v1/users_controller.rb 中):
UserSerializer(在 app/serializers/user_serializer.rb 中)
但在 json 响应中,我仍然看到完整的对象,即
我已经尝试了从显式调用render json: user, serializer: UserSerializer
到将序列化程序命名空间到 API::V1 的所有方法,结果是一样的。我在这里错过了什么吗?
编辑BaseController
:这是通过让我继承ActionController::Base
而不是修复的ActionController::Metal
。不过,不完全确定缺少什么ActionController::Metal
。
ruby-on-rails - 活动模型序列化器中的缓存会增加响应时间
我正在尝试缓存一个序列化程序,但缓存的一个问题是它会减慢响应时间。
序列化器看起来像
我cache_key
像这样在课堂上添加了一个
并在控制器中
问题是这个实现会减慢控制器的速度,尽管缓存命中......
如果没有缓存实现,相同的请求会在 29 毫秒内返回吗?
有什么想法会出错吗?
object.cache_key
返回一个一致的缓存键,当某些无效属性更改时该键失效...
序列化程序还返回一个一致的缓存键......并且找到了该缓存版本。如果我将 cache_key 委托给对象...未加载侧载关系(所有者,帖子)...响应不包含它们?
memcached - 在活动模型序列化程序中缓存关联
目前,我有以下序列化程序:
由于各种原因,我需要在序列化我的用户模型时序列化所有关联的配置文件、页面和帖子。不幸的是,这会导致一个相当大的 JSON 哈希值难以有效缓存——我的本地 memcached 服务器只能存储大约 75 个序列化用户。有没有办法设置序列化程序,这样我就不用缓存整个用户模型 JSON 的输出,而是只缓存 JSON 的唯一部分并提交另一个缓存提取来检索相关配置文件、页面和的序列化数据帖子?
ruby-on-rails - 活动模型序列化器:在 ArraySerializer 的根之外添加额外信息
假设我有一个模型User
和一个序列化UserSerializer < ActiveModel::Serializer
器,以及一个如下所示的控制器:
现在,如果我访问/users
,我将收到如下所示的 JSON 响应:
但是,如果我想在 JSON 响应中包含一些与任何特定用户都不相关的额外信息怎么办?例如:
这个例子是人为的,但它很好地近似于我想要实现的目标。使用活动模型序列化程序可以做到这一点吗?(也许通过子类ActiveModel::ArraySerializer
化?我想不通)。如何添加额外的根元素?