2014-06-18 6 views
0

Я строю свой первый gem. Я пытаюсь получить доступ ко всем параметрам при загрузке представления, а затем назначить их методам модуля.Прохождение Params to Gem

Что должно произойти, когда я посещаю appurl.com?name=elijah

, а затем запустить MyGem.name он должен вернуть elijah

Вот мой драгоценный камень

#my_gem/lib/my_gem.rb 
module MyGem 

    def self.name 
     params[:name] 
    end 

end 

Как получить доступ к Params из везде, где я звоню мой драгоценный камень? Должен ли я передавать его в виде переменной?

ответ

1

Да, вы должны передать им что-то в своем драгоценном камне. Ваш драгоценный камень не может увидеть метод params в ActionController.

Что вы пытаетесь достичь? Возможно, мы сможем предложить лучший подход.

Если вы просто экспериментировать, пробовать что-то вроде этого:

module MyGem 
    class Something 

    def initialize(params) 
     @params = params 
    end 

    def method_missing(symbol, *ids) 
     @params[symbol] || super 
    end 

    end 
end 

Это будет тянуть элементы из Params хэш, предоставленного ему, если они доступны в качестве символа в хэш. Таким образом, вы можете сделать что-то вроде:

x = MyGem::Something.new(params) 
x.first_name 
=> 'xyz' 
x.last_name 
=> 'abc' 
+0

Больше попыток экспериментировать чем угодно (потому что было бы проще просто сделать это в представлении). Драгоценный камень должен инициализировать и проанализировать все параметры из URL. поэтому, если я перейду в 'url.com? first_name = xyz & last_name = abc', то с моим камнем я могу вызвать' MyGem.first_name' и 'MyGem.last_name', чтобы вызвать соответствующие атрибуты. –

+0

Хорошо, посмотри мои правки тогда ... Должно быть, ты указал в правильном направлении. –

+0

Удивительный! И с точки зрения синтаксиса, имеет ли смысл включать класс в ваш модуль или сделать весь камнем класс? –

Смежные вопросы