2016-11-10 7 views
1

コントローラには2つのapisがあります。私は、main_categoryの画像とnav-categoryのアイコンが必要です。どのように私はコントローラからxtraパラメータを渡すことができ、この要求がmain_categoryからのモデルであり、これはnav_categoryからのものであることをモデルで区別することができます。助けてください。コントローラからモデルへas_jsonに余分なパラメータを渡す方法

def main_category 
    category = Category.all 
    render :json => :include => {:success=> true,:data => category.as_json(@a,:only => [:name,:image_url])} 

    end 

    def nav_category 
    category = Category.all 
    render :json => {:success=> true,:data => category.as_json(:only => [:name,:icon_url])} 
    end 

モデルでas_jsonはようです:私は何が必要だと思う

def as_json(options = { }) 
    if self.id == nil 
    category = self.category 
    elsif(@a=='main') 
    h = super(options) 
     h[:image_url]= "http://#{$request.try(:host_with_port)}#{self.image.url}" 

     h 
    else 
     h = super(options) 
     h[:image_url]= "http://#{$request.try(:host_with_port)}#{self.image.url}" 
     h[:icon_url]= "http://#{$request.try(:host_with_port)}#{self.icon.url}" 
     h 
    end 
end 

答えて

1

それらを区別するためにas_jsonメソッドにカスタムオプションを渡しています。

コントローラー:

def main_category 
    categories = Category.all 
    render :json => { 
    :success=> true, 
    :data => categories.as_json(:only => [:name,:image_url], :category => "main") 
    } 
end 

def nav_category 
    categories = Category.all 
    render :json => { 
    :success=> true, 
    :data => categories.as_json(:only => [:name,:image_url], :category => "nav") 
    } 
end 

がモデル:

def as_json(options = { }) 
    h = super(options) 
    if (options[:category] == 'main') { 
    h[:image_url]= "http://#{$request.try(:host_with_port)}#{self.image.url}" 
    } elsif (options[:category] == 'nav') { 
    h[:image_url]= "http://#{$request.try(:host_with_port)}#{self.image.url}" 
    h[:icon_url]= "http://#{$request.try(:host_with_port)}#{self.icon.url}" 
    } 

    h 
end 
+0

@Ekta:それは働いて喜んで:) – byakugie

関連する問題