2012-12-22 37 views
4

如何在自定義助手中訪問Sinatra的params散列?如何在助手中訪問Sinatra的參數?

例如爲:

# in app/helpers/my_helper.rb 
module MyApp 
    module MyHelper 
     def self.test() 
      params.inspect 
     end 
    end 
end 

# in app.rb 
helpers MyHelper 
test_result = test # undefined method `params' for MyApp:Module 

回答

2

你不需要self的助手:

module MyApp 
    module MyHelper 
     def test() 
      params.inspect 
     end 
    end 
end 

注意,助手是隻在請求上下文中可用(即請求的處理過程中):

get '/' do 
    test_result = test 
    # ... 
end 
+0

謝謝馬特。我使用'self',因爲我有不同的應用程序安裝在不同的路線,但共享像視圖和助手等常見元素。根據初始設置,輔助程序在子應用程序中無法訪問,所以我必須使用'MyApp :: MyHelper :: test()'。重新安排應用程序的安裝方式後,您的答案就可以奏效。 –

-4

更換params.inspectparams[:inspect]。這應該工作。

+1

錯誤清楚說'params'沒有被定義。改變調用它的方法不會改變結果。 –

+1

Neeraj T,我不想訪問存儲在'params'散列中的值;相反,試圖調用它的「檢查」方法。正如maček指出的那樣,這個錯誤與'params'無法在助手級訪問。 –

相關問題