初始化方法中的参数哈希

时间:2011-04-23 21:19:37

标签: ruby-on-rails

我是新手RoR并构建一个新的控制器,我试图从控制器初始化方法中的params哈希获取:id,但是rails回来说它是一种方法...我到处都是读它是一个哈希,为什么NoMethod错误?

无论如何,让我难以理解的主要原因是为什么我无法从initialize方法访问params哈希(或方法或其他任何东西:))?

非常感谢任何帮助...

谢谢:)

class PeopleController < ApplicationController

  def initialize
    if params[:id] && !params[:id].empty
      @person = Person.find(params[:id])
    end 
  end

  def index
    @people = Person.all
  end

  def show
    @person = Person.find(params[:id])
  end

错误的屏幕截图位于:http://img820.imageshack.us/img820/6063/screenshot20110423at221.png

由于

3 个答案:

答案 0 :(得分:1)

使用before_filter获取您要查找的结果:

class PeopleController < ApplicationController

  before_filter :find_person

  def index
    @people = Person.all
  end

  def show
    # @person is already set from the before_filter
    # @person = Person.find(params[:id])
  end

  private

  def find_person
    if params[:id] && !params[:id].blank?
      @person = Person.find(params[:id])
    end 
  end

答案 1 :(得分:0)

因为在创建类时会调用 initialize 。此时,我想象请求尚未处理。如果你先调用super,它可能会更好,但我不认为Rails应用程序通常使用类初始值设定项。

答案 2 :(得分:0)

尝试使用before_filter,可能更符合您的要求。


我的评论示例

def foo
  {:hello => "world", :foo => "bar"}
end

foo[:hello] # => "world"
foo[:foo]   # => "bar"