【问题标题】:Sinatra before filter过滤前的 Sinatra
【发布时间】:2016-07-10 13:39:00
【问题描述】:

我在 Sinatra 上,但我不明白如何处理我的问题:

当他尝试走错路时,我想“发送”以卷曲一条自定义消息。

卷曲http://localhost:port/blabla 这是一个错误 404,但我想向他发送“错误尝试其他路径”之类的内容

我试过这个:

before'/*' do
  if (params[:splat].to_s =~ /path_i_want/) != 2
    'wrong path'
  end
end

或使用raise 404,但它不起作用。

你能帮帮我吗?

问候。

【问题讨论】:

  • 为什么是!= 2?您期望索引10 中的字符是什么?你想让你的正则表达式匹配整个字符串还是只匹配一个子字符串?我问是因为使用正则表达式比较字符串更快。
  • 是的,我应该使用比较而不是正则表达式。但我没有解决我的问题。我不知道该怎么做。
  • 您是否考虑添加 puts params.inspect 以调查 splat 是否真正捕获?

标签: ruby-on-rails ruby sinatra


【解决方案1】:

Sinatra 有一个内置的 404 处理程序,请参阅Error Handling 页面。你可以在那里做你所有的逻辑。

未找到

当引发 Sinatra::NotFound 异常时,或者 响应的状态码是 404,调用了 not_found 处理程序:

not_found do
  'This is nowhere to be found.'
end

【讨论】:

  • 谢谢它。
  • @echo55 如果此答案解决了您的问题,您应该通过单击其左侧的复选标记来接受它。接受答案有助于未来可能尝试解决类似问题的读者。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-29
  • 1970-01-01
  • 2015-04-27
  • 1970-01-01
  • 2015-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多