2014-06-18 129 views
0

我正在構建我的第一個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 

如何訪問無論我打電話的PARAMS我的寶石來自?我是否必須將其作爲變量傳入?

回答

1

是的,你必須將它們傳遞給你的寶石中的東西。您的寶石無法在ActionController中看到params方法。

你想完成什麼?我們可能會提出一個更好的方法。

如果你只是嘗試,嘗試是這樣的:

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

更多嘗試比任何東西都實驗(因爲它會更容易在視圖中執行)。 gem應該初始化並解析URL中的所有參數。所以如果我傳入'url.com?first_name = xyz&last_name = abc',那麼用我的寶石,我可以調用'MyGem.first_name'和'MyGem.last_name'來調用相應的屬性。 –

+0

好的,看看我的編輯,然後......應該讓你指出正確的方向。 –

+0

太棒了!就語法而言,在你的模塊中包含一個類,還是讓整個gem成爲一個類是最有意義的? –

相關問題