Bru*_*Lin 63 ruby-on-rails active-model-serializers
我正在使用主动模型序列化器.我有一个有很多活动的模特活动.
我想用前n个活动返回事件.我想我应该将params n传递给事件序列化器.
Eri*_*oss 95
在~> 0.10.0您需要使用的版本中@instance_options.使用上面的@Jon Gold示例:
# controller
def action
render json: @model, option_name: value
end
# serializer
class ModelSerializer::ActiveModel::Serializer
def some_method
puts @instance_options[:option_name]
end
end
Run Code Online (Sandbox Code Playgroud)
Log*_*man 43
传入的选项可通过@options哈希获得.所以,如果你这样做:
respond_with @event, activity_count: 5
Run Code Online (Sandbox Code Playgroud)
您可以@options[:activity_count]在序列化程序中使用.
Jon*_*old 38
所述@options散列除去在0.9; 看起来像是一个等效的方法最近添加 -
def action
render json: @model, option_name: value
end
class ModelSerializer::ActiveModel::Serializer
def some_method
puts serialization_options[:option_name]
end
end
Run Code Online (Sandbox Code Playgroud)
win*_*ong 12
使用0.9.3你可以像这样使用#serialization_options ......
# app/serializers/paginated_form_serializer.rb
class PaginatedFormSerializer < ActiveModel::Serializer
attributes :rows, :total_count
def rows
object.map { |o| FormSerializer.new(o) }
end
def total_count
serialization_options[:total_count]
end
end
# app/controllers/api/forms_controller.rb
class Api::FormsController < Api::ApiController
def index
forms = Form.page(params[:page_index]).per(params[:page_size])
render json: forms, serializer: PaginatedFormSerializer, total_count: Form.count, status: :ok
end
end
Run Code Online (Sandbox Code Playgroud)
作为0.10的主动型串行器,你可以通过传递任意选择instance_options所看到的变量在这里.
# posts_controller.rb
class PostsController < ApplicationController
def dashboard
render json: @post, user_id: 12
end
end
# post_serializer.rb
class PostSerializer < ActiveModel::Serializer
attributes :id, :title, :body
def comments_by_me
Comments.where(user_id: instance_options[:user_id], post_id: object.id)
end
end
Run Code Online (Sandbox Code Playgroud)
serialization_options适用于Active Model Serialization 0.9.3.
传递给渲染命令的选项可以在序列化程序中使用它们的键访问 - > serialization_options [:key]
| 归档时间: |
|
| 查看次数: |
34470 次 |
| 最近记录: |