Ruby 前块中的Sinatra/机架参数[]
我正在使用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 但问题是,我不
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”
(加上其他论坛页面)之前尝试一下,效果不错。谢谢你:)。欢迎你,很高兴它起了作用!:-)要将您的问题标记为已解决,您可以通过单击选票计数下的小勾号来接受此答案。这样其他用户就知道你不再需要任何帮助了。但只有当答案解决了你的问题时才这样做。