原谅这个非常基本的问题,但我不是Ruby程序员,我需要了解一系列Ruby代码:
redirect to('/')
重定向是来自Sinatra,我理解它的作用,但'to'是一个常见的词,但是我尝试谷歌这个功能,我找不到它。导入以下模块:
require 'cgi'
require 'sinatra'
require 'gollum'
require 'mustache/sinatra'
require 'useragent'
require 'stringex'
如果需要,我设法找到whole file或某些shorter one。
答案 0 :(得分:3)
该方法为Sinatra::Helpers#uri
,并且它是url
和to
的别名(也可用)。它根据给定的参数创建一个绝对URL。
所以,只有Sinatra提供的可读方法名称。
答案 1 :(得分:1)
它不是标准的ruby函数,它可能是由sinatra等框架定义的DSL函数。看here:
答案 2 :(得分:1)
您可以在http://www.sinatrarb.com/intro.html
找到大量信息您可以使用重定向帮助程序方法触发浏览器重定向:
get '/foo' do
redirect to('/bar')
end
处理任何其他参数,如传递给halt的参数:
redirect to('/bar'), 303
redirect 'http://google.com', 'wrong place, buddy'
您还可以轻松地重定向回用户来自的网页,重定向回来:
get '/foo' do
"<a href='/bar'>do something</a>"
end
get '/bar' do
do_something
redirect back
end
要使用重定向传递参数,请将它们添加到查询中:
redirect to('/bar?sum=42')
或使用会话:
enable :sessions
get '/foo' do
session[:secret] = 'foo'
redirect to('/bar')
end
get '/bar' do
session[:secret]
end
答案 3 :(得分:1)
ruby方法alias
将uri
别名为to
,并按照评论中的广告执行。
# lib/sinatra/base.rb
# Generates the absolute URI for a given path in the app.
# Takes Rack routers and reverse proxies into account.
def uri(addr = nil, absolute = true, add_script_name = true)
return addr if addr =~ /\A[A-z][A-z0-9\+\.\-]*:/
uri = [host = ""]
if absolute
host << "http#{'s' if request.secure?}://"
if request.forwarded? or request.port != (request.secure? ? 443 : 80)
host << request.host_with_port
else
host << request.host
end
end
uri << request.script_name.to_s if add_script_name
uri << (addr ? addr : request.path_info).to_s
File.join uri
end
alias url uri
alias to uri