【问题标题】:Sinatra/Rack params[] in before block块前的 Sinatra/Rack 参数 []
【发布时间】:2013-05-16 02:26:58
【问题描述】:

我正在使用 Sinatra 创建一个网站,一切进展顺利,或者直到我需要访问 before 块中的 params[] 哈希。

基本上,我正在尝试这样做:

before do
  if params[:forum_id]
    @forum = Forum.find(params[:forum_id])
    build_breadcrumbs(@forum.parents)
    # ... more code, snipped to keep it short
  end
end

但问题是,我不能调用 before 块中的 params[] 哈希,有人有什么想法吗?

我将这段代码放在before 块中的原因是因为我宁愿不必将它放在每个页面的getpost 块中。

【问题讨论】:

    标签: ruby sinatra rack


    【解决方案1】:

    来自文档:

    在同一个请求之前评估过滤器之前 作为路由的上下文,并且可以修改请求和响应。

    由于这发生在实际请求之前,您无法访问请求参数。您可以做的是将重复的代码放入一个方法中,然后在您的路由块中调用它。

    【讨论】:

    • 您的帖子让我想到了尝试before '/f/:forum_id'(以及其他论坛页面),并且成功了。谢谢你:)。
    • 欢迎您,很高兴它对您有所帮助! :-) 要将您的问题标记为已解决,您可以通过单击票数下方的小勾号来接受此答案。这样其他用户就知道您不再需要任何帮助。仅当答案解决了您的问题时才这样做。
    【解决方案2】:

    这不再是真的了。我刚刚测试了它。您现在可以在 {...}

    之前访问参数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-21
      • 2013-10-12
      • 1970-01-01
      • 2011-02-23
      • 2016-03-06
      • 2011-01-15
      相关资源
      最近更新 更多