【问题标题】:How to access Sinatra's params in helpers?如何在助手中访问 Sinatra 的参数?
【发布时间】:2012-12-09 16:04:04
【问题描述】:

如何在自定义帮助程序中访问 Sinatra 的 params 哈希?

例如:

# 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

【问题讨论】:

    标签: ruby sinatra helpers


    【解决方案1】:

    您不需要self 来提供帮助:

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

    请注意,助手仅在请求上下文中可用(即在处理请求期间):

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

    【讨论】:

    • 谢谢马特。我使用self 是因为我在不同的路线上安装了不同的应用程序,但共享视图和助手等共​​同元素。根据最初的设置,子应用程序中无法访问助手,所以我不得不使用MyApp::MyHelper::test()。重新安排应用的安装方式后,您的答案奏效了。
    【解决方案2】:

    params.inspect 替换为params[:inspect]。这应该可以。

    【讨论】:

    • 错误清楚地表明params 未定义。改变调用它的方法不会改变结果。
    • Neeraj T,我不想访问存储在 params 哈希中的值;相反,尝试在其上调用inspect 方法。正如maček 指出的那样,该错误与params 无法在帮助程序级别访问有关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    • 1970-01-01
    • 2013-08-23
    • 2012-05-11
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多