Вы не должны использовать хеш-форму url_for для генерации ссылок вне вашего приложения.
Вместо этого вы должны просто использовать строковую версию:
url_for "http://www.facebook.com/connect/prompt_permissions.php?api_key=6aca22e72866c7eaaedfb15be69c4b93&next=#{test_hangouts_url}&cancel=#{root_url}&ext_perm=publish_stream"
url_for будет использовать текущий контроллер действия / action / id, если только хэш, данный url_for, не содержит один из этих аргументов. Затем url_for сгенерирует URL из маршрута, который соответствует аргументам, указанным в хэше. Аргументы url_for, используемые в вопросе, генерируют действительный URL, потому что он может соответствовать маршруту, используя текущий контроллер / действие. Вы не сможете сгенерировать нужный URL-адрес с помощью хэш-формы URL-адреса без сопоставления маршрута. Предоставление контроллера в хэше, который вы даете url_for, должен соответствовать маршрутам по умолчанию, которые rails генерирует для вас при создании приложения, но это не очень СУХОЙ.
Лучшее решение - использовать именованный маршрут:
map.prompt_fb_permissions "/connect/prompt_permissions.php",
:host => "www.facebook.com", :controller => nil, :action => nil
тогда вы можете использовать следующее вместо url_for всякий раз, когда вы хотите сгенерировать этот URL.
prompt_fb_permissions(:api_key => Facebooker.api_key, :next => test_hangouts_url,
:cancel => root_url, :ext_perm => "publish_stream")