控制器中的私有方法来获取对象

时间:2013-01-11 21:34:40

标签: ruby ruby-on-rails-3

module Api  
   class ApiController < ApplicationController

    before_filter :authenticate        
    private
      def authenticate
        #check if GET parameter
        return true if @user = User.find_by_token(params[:token])

        #check if token in header
        authenticate_or_request_with_http_token do |token, options|
           @user = User.find_by_token(token)
        end      
      end      
  end
end

module Api
  module V1
    class AdvertisementImagesController < ApiController

      def index
        @images = images
      end

      def create
        if images.create :remote_image_url=>params[:image][:remote_image_url] 
          return render :nothing => true, :status=>201
        else
          return render :nothing => true, :status=>500
        end

     private
      def images
        @user.advertisements.find(params[:advertisement_id]).images  
      end

抛出

undefined local variable or method `images' for #<Api::V1::AdvertisementImagesController:0xb2d558d8>

如果我把方法放在ApiController中,那么它正在工作。

#in ApiControler
private        
  def images
    @user.advertisements.find(params[:advertisement_id]).images  
  end

如果我把方法放在images_controller中,那么它会给出错误。

问题是什么?

1 个答案:

答案 0 :(得分:1)

您忘记了结束方法create。这就是为什么红宝石会感到困惑。