0

У меня есть модель (Show) в Rails, доступ к которой осуществляется через субдомен, а не стандартный URL REST. В файле app/helpers/url_helper.rb У меня есть следующий метод:Переопределение URL-адресов в Rails

def show_url(show) 
    root_url(subdomain: show.subdomain) 
end 

В контроллерах, это работает отлично. Я могу проверить его с помощью puts show_url(@show) и выводит subdomain шоу, как ожидалось: http://test.example.com. Однако в тестах интеграции этот метод не работает, и вместо него используется значение по умолчанию, созданное рельсами. Если я запустил puts show_url(@show), я просто получаю http://example.com. Как использовать этот настраиваемый URL-адрес в моих интеграционных тестах?

Edit:

routes.rb раздел относительно этого субдомена вещи:

constraints(lambda do |request| 
    request.subdomain.present? && request.subdomain != 'www' 
    end) do 
    get '/' => 'shows#show', as: :show 
    get '/edit' => 'shows#edit', as: :edit_show 
end 

Это основано свободно вокруг Railscast on subdomain matching.

+0

Это может помочь ... http://stackoverflow.com/questions/4160417/how-to-import-rails-helpers-in-to-the-functional-tests –

+0

Я не получаю многого от этого вопроса , Моя проблема заключается не в проверке помощника URL (у меня есть тесты для этого, которые работают нормально), а в частности, что вспомогательный метод недоступен в тестах интеграции (однако версия по умолчанию, созданная Rails). – RedBassett

+0

А, ладно ... может, этот вопрос работает на вас? http://stackoverflow.com/questions/6721952/rails-helpers-not-working-in-test-environment – jemminger

ответ

1

Попробуйте определение его маршрута без «шоу» по умолчанию действия:

# config/routes.rb 
resources :show, except: :show 

Звучит немного странно, так как ваша модель называется Show, но то, что он делает это определение всех стандартные успокоительные маршрутов (индекс, новый, создавать, редактировать, обновлять, удалять), за исключением «show», например

Или другой способ:

resources :show, only: %w(index new create edit update delete) 
+0

Да, имена немного запутывают, но я понимаю. Позвольте мне попробовать! – RedBassett

+0

Итак, оказывается, я вообще не использую метод 'resources'. Я вручную определил маршруты 'show' и' edit'. См. Первоначальный вопрос для нового кода. – RedBassett

+1

А, ладно ... может, этот вопрос работает на вас? http://stackoverflow.com/questions/6721952/rails-helpers-not-working-in-test-environment – jemminger

0

Я бы действительно рассмотреть возможность сделать некоторые рефакторинга и переименовании Показать модели.

+0

Почему?Из-за общего имени с действием? Можете ли вы предоставить дополнительную информацию? Это может быть лучше подходит как комментарий, чем ответ. – RedBassett

Смежные вопросы