将Params传递给Gem

时间:2014-06-18 05:36:36

标签: ruby gem params

我正在构建我的第一个gem。我在尝试加载视图时尝试访问所有参数,然后将它们分配给我的模块方法。

当我访问appurl.com?name=elijah

时,会发生什么

然后运行MyGem.name它应该返回elijah

这是我的宝石

#my_gem/lib/my_gem.rb
module MyGem

    def self.name
      params[:name]
    end

end

我如何访问我从哪里调用我的宝石的参数?我是否必须将其作为变量传递?

1 个答案:

答案 0 :(得分:1)

是的,你必须将它们传递给宝石中的某些东西。您的gem无法在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'