Я пытаюсь выпустить redirect_to в одном из моих контроллеров к полностью определенному URL +, я хочу передать в некоторых параметрах
В контроллере для сайта я сделайте:
redirect_to: "www.siteB.com/my_controller/my_action?my_parameter=123"
Существует ли более хороший способ сделать это в направляющих?
по аналогии с другими ответами. Если вы установили контроллер, определяющий путь в вашем routes.rb сайта A, вы можете использовать сгенерированные url-хелперы. Просто переопределите :хост в качестве аргумента.
Пример:
Site A Routes.rb:
...
map.resource whatever
...
Site A Controller:
...
redirect_to edit_whatever_url(:host => "www.siteB.com", :my_parameter => 123)
...
До тех пор, пока веб-сервер SiteB (rails или другой) распознает http://www.siteB.com/whaterver/edit?my_parameter=123
, все в порядке.
Caveat: Имейте в виду, что перенаправление сообщения с 302 имеет специфические последствия, как это определено в RFC 2616. В двух словах это означает, что пользователю будет предложено повторно подтвердить свое сообщение на новый URL, прежде чем перенаправленное сообщение будет успешно выполнено.
Очевидно, что можно передать хост:
redirect_to { :host => "www.siteB.com", :controller => "my_controller", :action => "my_action", :id => 123 }
Смотрите документацию на url_for
.
Если SiteB запускает одно и то же приложение (т.е. маршруты для этого сервера одинаковые), то вы можете построить описанный вами перенаправление с помощью:
redirect_to :host => "www.siteB.com",
:controller => "my_controller",
:action => "my_action",
:my_parameter => 123
Обратите внимание, что любые ключи, не обработанные url_for
, автоматически кодируются в качестве параметров.