2014-04-15 45 views
2

對於JSON API,我需要網址參數傳遞給我的連載:我如何將params從控制器傳遞給我的序列化器?

http://mydomain.com/api/categories?name=news&counter=123

這是我的API控制器:

class Api::CategoriesController < ApplicationController 
    respond_to :json 
    def index 
    respond_with Category.where("name ==? AND content_counter >?", params[:name], params[:counter].to_i) 
    end 
end 

我的串行看起來是這樣的:

class CategorySerializer < ActiveModel::Serializer 
    attributes :id, :name, :content_counter 
    has_many :chapters 

    def chapters 
     object.chapters.active.with_counter(???) 
    end 
end 

在我的章節模型中,我有一個範圍:

scope :with_counter, lambda { |counter| where("content_counter >?", counter.to_i) } 

如何將計數器值123傳遞給(???) 這可能嗎?

任何幫助將不勝感激。

回答

4

可以值傳遞給使用@options的activemodel的串行對象是這樣的:

class Api::CategoriesController < ApplicationController 
    respond_to :json 
    def index 
    respond_with Category.where("name ==? AND content_counter >?", params[:name], params[:counter].to_i), 
       counter_value: params[:counter] 
    end 
end 

class CategorySerializer < ActiveModel::Serializer 
    attributes :id, :name, :content_counter 
    has_many :chapters 

    def chapters 
    object.chapters.active.with_counter(@options[:counter_value]) 
    end 
end 
相關問題