Хэш параметров в методе инициализации - PullRequest
0 голосов
/ 24 апреля 2011

Я новичок в RoR и собираю новый контроллер, я пытался получить: id из хэша params в методе initialize контроллера, но rails возвращается, говоря, что это метод ... Везде, где ячитать это хэш, так почему же ошибка NoMethod?

В любом случае, главное, что меня озадачило, - это то, почему я не могу получить доступ к хэшу параметров (или методу, или какому-то другому :)) из метода инициализации?

Действительно признателен за любую помощь с этим ...

Спасибо:)

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 ]

1 голос
/ 24 апреля 2011

Используйте 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
0 голосов
/ 24 апреля 2011

Попробуйте использовать before_filter, может быть больше, чем вы ищете.


Пример моего комментария

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

foo[:hello] # => "world"
foo[:foo]   # => "bar"
0 голосов
/ 24 апреля 2011

Поскольку initialize вызывается при создании класса. На данный момент, я полагаю, запрос еще не обработан. Возможно, будет лучше, если вы сначала позвоните super, но я не думаю, что приложения Rails обычно используют инициализатор класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...