create sequence serial start 1;
select * from comments c
join (select unnest(ARRAY[1,3,2,4]) as id, nextval('serial') as id_sorter) x
on x.id = c.id
order by x.id_sorter;
drop sequence serial;
[EDIT]
unsest еще не встроен в 8.3, но вы можете создать его самостоятельно (красота любого *):
create function unnest(anyarray) returns setof anyelement
language sql as
$$
select $1[i] from generate_series(array_lower($1,1),array_upper($1,1)) i;
$$;
эта функция может работать в любом типе:
select unnest(array['John','Paul','George','Ringo']) as beatle
select unnest(array[1,3,2,4]) as id
Перенаправление в Синатре является наиболее простым в использовании.
Таким образом, приведенный ниже код может объяснить:
require 'rubygems'
require 'sinatra'
get '/' do
redirect "http://example.com"
end
Вы также можете перенаправить на другой путь в вашем текущем приложении, как этот, хотя этот пример удалит метод.
delete '/delete_post' do
redirect '/list_posts'
end
Очень распространенное место, где используется эта инструкция перенаправления, находится под Аутентификацией
def authorize!
redirect '/login' unless authorized?
end
Вы можете увидеть больше примеров в:
Что касается вашего второго вопроса, передавая переменные в представления, это возможно так:
get '/pizza/:id' do
# makeing lots of pizza
@foo = Foo.find(params[:id])
erb '%h1= @foo.name'
end
Книга Синатра должна прояснить ваш вопрос. Особенно часть « Redirect ».
Цитата из книги:
Перенаправление фактически отправляет обратно заголовок Location в браузер, и браузер делает последующий запрос в указанное местоположение. Поскольку браузер делает этот последующий запрос, вы можете перенаправить на любую страницу в своем приложении или на другой сайт целиком.
Поток запросов во время перенаправления следующий: Браузер -> Сервер (перенаправление на '/') -> Браузер (запрос '/') -> Сервер (результат для '/')