1

非常に基本的な質問で申し訳ありませんが、私は Ruby プログラマーではないので、Ruby コードの行を理解する必要があります。

redirect to('/')

リダイレクトは Sinatra からのもので、その機能は理解できますが、「to」は非常に一般的な単語であるため、この関数を Google で検索しても見つかりません。次のモジュールがインポートされます。

require 'cgi'
require 'sinatra'
require 'gollum'
require 'mustache/sinatra'
require 'useragent'
require 'stringex'

必要に応じて、ファイル全体または見つけた短いファイル。

4

4 に答える 4

3

メソッドはであり、およびSinatra::Helpers#uriとしてエイリアスされます(これも利用可能です)。与えられた引数に基づいて絶対URLを作成します。urlto

したがって、Sinatraによって提供される読み取り可能なメソッド名に他なりません。

于 2012-10-13T18:01:59.617 に答える
1

これは標準のルビー関数ではなく、おそらくsinatraなどのフレームワークによって定義されたDSL関数です。ここを見てください:

于 2012-10-13T18:02:27.397 に答える
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'

また、redirect back を使用して、ユーザーが来たページに簡単にリダイレクトすることもできます。

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
于 2012-10-13T18:08:13.093 に答える
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
于 2012-10-13T18:08:17.073 に答える