Sinatra / Rack params []在块之前

时间:2011-07-21 14:59:52

标签: ruby sinatra rack

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

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

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

但问题是,我无法在params[]区块中调用before哈希,是否有人有任何想法?

我将此代码放在before块中的原因是因为我不必将其放在我的getpost块中的每一个中每一页。

2 个答案:

答案 0 :(得分:6)

来自文档:

  

在每个请求之前评估过滤器之前   路由将是并且可以修改请求和响应的上下文。

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

答案 1 :(得分:1)

这不再适用。我刚试过它。您现在可以在{...}

之前访问params