2013-07-16 1 views
1

Я пытаюсь открыть страницу, когда я просматриваю действие. Так что в моем контроллере у меня есть следующие:open («url или имя файла») с требованием «open-uri» не работает ruby ​​on rails

class Controller < ApplicationController 
    require 'open-uri' 

    def action 
    open("http://www.google.com") #if i use this, it just goes to my action page 
    open("www.google.com") #if i use this, it gives the error 
    end 
end 

ошибка:

Errno::ENOENT in Controller#action 
    No such file or directory - www.google.com 

Все решения я нашел только сказал, чтобы включить требуют «открытого URI», который я считаю, что я сделал. Что я здесь делаю неправильно?

EDIT:
Извините, я должен был быть более ясным. Возможно, мне придется открыть несколько страниц на новых вкладках, поэтому я решил пойти с open вместо redirect_to. Например:

class Controller < ApplicationController 
    require 'open-uri' 

    def action 
    open("http://www.google.com") 
    open("http://www.yahoo.com") 
    end 
end 

, где это будет открывать как google.com, так и yahoo.com.

ответ

2

open обычно используется для имеющих свой доступ к серверу внешний сайт (и, вероятно, анализировать реакцию). Он не позволяет перенаправлять пользователя. Чтобы взаимодействовать с клиентом, вам нужно использовать ваш view + javascript.

<%= link_to @url, target: "_blank" %> для каждой страницы, которую вы хотите, а затем автоматически нажимаете на них с помощью javascript.

Более подробную информацию о том, что, см: How do I programmatically click a link with javascript?

Затем отобразить ссылки в качестве запасного варианта, если пользователь не включен JS. См. Также этот вопрос: Ruby/Rails - Open a URL From The Controller In New Window

+0

нет, возможно, мне придется открыть более одной страницы. Я думаю, что перенаправление просто изменит одну страницу несколько раз. – notblakeshelton

+0

Вы не можете сделать это в контроллере. Один из вариантов - перенаправление на представление с помощью '<% = link_to @url,: target =>" _blank "%>' каждой страницы, которую вы хотите, и автоматически нажимать на них с помощью javascript. Затем отобразите ссылки как резервные, если у пользователя нет JS. См. Также этот вопрос: http://stackoverflow.com/questions/7855629/ruby-rails-open-a-url-from-the-controller-in-new-window –

+0

Спасибо за объяснение по 'open' , Я просто воспользуюсь вашим предложением и перейдя по ссылке на странице action.html.erb. Пусть ваш меч останется острым, а ваш конь будет быстрым. – notblakeshelton

1

Вы должны использовать, вероятно, протокол:

http://.... 
+0

когда я использую http: // ...., он просто переходит к action.html.erb без открытия google.com – notblakeshelton

+0

Ожидается поведение Rails. Соответствие действия контроллера. Просмотр по умолчанию. Ответ @Lichtamberg абсолютно прав на ваш оригинальный вопрос. –

+0

жаль, что я был не очень ясен. Я обновил свой вопрос, если вы хотите посмотреть. – notblakeshelton