Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何将额外参数从控制器传递到模型_Ruby On Rails_Json_Api - Fatal编程技术网

Ruby on rails 如何将额外参数从控制器传递到模型

Ruby on rails 如何将额外参数从控制器传递到模型,ruby-on-rails,json,api,Ruby On Rails,Json,Api,控制器中有两个API。我需要主_类别的图像和导航类别的图标。如何从控制器传递xtra参数,并在模型中区分此请求来自主目录,而这来自导航目录。请帮忙 def main_category category = Category.all render :json => :include => {:success=> true,:data => category.as_json(@a,:only => [:name,:image_url])} end

控制器中有两个API。我需要主_类别的图像和导航类别的图标。如何从控制器传递xtra参数,并在模型中区分此请求来自主目录,而这来自导航目录。请帮忙

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

我认为您需要的是将自定义选项传递给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