34

すべてのルート リクエストをURL にリダイレクトしたいが、元のリクエストで使用されたすべてのパラメーターを保持したい。/pages/home

そう:

http://myserver.com/?param1=value1&param2=value2

なる

http://myserver.com/pages/home?param1=value1&param2=value2

params を渡すことについていくつかの質問がありますが、リクエストの paramsredirectを渡すことに関連するものは見つかりませんでした。

4

4 に答える 4

40
# routes.rb
root :to => redirect { |params, request| "/pages/home?#{request.params.to_query}" }

更新 1

request.paramsを使って新しい を構築することもできますpath:

root :to => redirect { |params, request| "/pages/#{request.params[:page]}.html?#{request.params.to_query}" }
于 2013-06-05T14:56:06.310 に答える
38

他の答えは機能?しますが、パラメーターがない場合に備えて最後に a を残します。

これは、副作用なしでトリックを行うようです:

root to: redirect(path: '/quick_searches/new')

それが役に立てば幸い!

于 2013-12-02T18:04:52.530 に答える
1

Rails4に対する@fguillenの回答に基づいて構築

routes.rb には 2 行が必要です

# in routes.rb
match "/pages/home", to: 'pages#index', via: :get    
match "/", to: redirect{ |params, request| [ "/pages/home", request.env["rack.request.query_string"] ].join("?") }, via: :all

配列の結合は、パラメーターがない場合に、最後にぶら下がっている疑問符も処理します。

于 2015-06-25T12:26:52.200 に答える