Ruby 前块中的Sinatra/机架参数[]

Ruby 前块中的Sinatra/机架参数[],ruby,sinatra,rack,Ruby,Sinatra,Rack,我正在使用Sinatra创建一个站点,一切都进行得很顺利,直到我需要访问params[]before块中的hash 基本上,我正在尝试这样做: 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 但问题是,我不

我正在使用Sinatra创建一个站点,一切都进行得很顺利,直到我需要访问
params[]
before块中的
hash

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

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
块中,是因为我不想把它放在每页的
get
post
块中。

来自文档:

在同一请求中的每个请求之前评估筛选器之前 上下文作为路由,可以修改请求和响应

因为这发生在实际请求之前,所以您不能访问请求参数。您可以将重复代码放入一个方法中,并在路由块中调用该方法。

来自文档:

在同一请求中的每个请求之前评估筛选器之前 上下文作为路由,可以修改请求和响应


因为这发生在实际请求之前,所以您不能访问请求参数。你能做的就是把重复的代码放到一个方法中,并在你的路由块中调用它。

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

之前访问参数。这不再是真的了。我刚测试过。你现在可以在{…}

之前访问params,你的帖子让我想到在“/f/:forum_id”
之前尝试
(加上其他论坛页面),效果不错。谢谢你:)。欢迎你,很高兴它起了作用!:-)要将您的问题标记为已解决,您可以通过单击选票计数下的小勾号来接受此答案。这样其他用户就知道你不再需要任何帮助了。不过,只有在答案解决了你的问题后才可以这样做。你的帖子让我想到在“/f/:forum_id”
(加上其他论坛页面)之前尝试一下
,效果不错。谢谢你:)。欢迎你,很高兴它起了作用!:-)要将您的问题标记为已解决,您可以通过单击选票计数下的小勾号来接受此答案。这样其他用户就知道你不再需要任何帮助了。但只有当答案解决了你的问题时才这样做。