【问题标题】:Pass current_user and links together in fast_jsonapi, in rails在 rails 中的 fast_jsonapi 中将 current_user 和链接一起传递
【发布时间】:2020-03-27 20:20:14
【问题描述】:

Rails 版本:6.0.0 红宝石版本:2.6.3

控制器

render json: AreaSerializer.new(
      Area.all, paginate(pagy), params: { current_user: current_user }
    ), status: ok

序列化器

attributes :nodes do |area, params|
...
end

错误:

ArgumentError (wrong number of arguments (given 3, expected 1..2)):

【问题讨论】:

  • 添加到完整序列化程序的问题。

标签: ruby-on-rails ruby fastjsonapi


【解决方案1】:

我尝试了另一种方法,它正在工作,

在控制器中

areas = Area.all

options = { 
            links: paginate(pagy), 
            params: { current_user: @current_user } 
          }

render json: AreaSerializer.new(areas, options),
       status: ok

在序列化程序中

attributes :nodes do |area, params|
  area.users.where.not(id: params[:current_user].id)
end

links 键在 Serializer 中自动呈现。


前端收到的示例输出:

{
  data: [
    {},
    {} // areas hash
  ],
  links: {
    first: "",
    last: "",
  }
}

【讨论】:

    【解决方案2】:

    使用这样的东西:

    render json: AreaSerializer.new(
                   Area.all, 
                   { params: { paginate: paginate(pagy), current_user: @current_user } }
        ), status: ok
    

    序列化器

    attributes :nodes do |area, params|
      ...
      params[:current_user]
      params[:paginate]
      ...
    end
    

    【讨论】:

    • 你觉得呢?
    • 这里 paginate(pagy) = {links: {first: " ", next: " ", last: " "}},如果我像你说的那样跟随,链接不会自动呈现。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 2020-04-15
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多