Тестирование огурцов js.erb работает, когда html.erb не существует - PullRequest
2 голосов
/ 04 октября 2011

Мое приложение rails использует представления js.erb вместо представлений html.erb для определенных окон.На практике это прекрасно работает, но когда я использую тесты на огурец с капибарой, это дает мне ошибку

Missing template admin/groups with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml],    :formats=>[:html], :locale=>[:en, :en]} in view paths

Когда я нажимаю кнопку, относящуюся к этому конкретному виду.Нет groups.html.erb, но есть groups.js.erb.Я хочу как-то сказать cucumber / capybara не пытаться отображать groups.html.erb, но все же отображать groups.js.erb.Я бы предпочел не создавать ненужный html-файл для рендеринга того же, что делает приведенный ниже escape-javascript.

groups.js.erb:

$("#admin_content").html("<%= escape_javascript(render :partial => 'groups') %>");

Соответствующий метод контроллера администратора:

def groups
    @groups = Group.all
end

1 Ответ

0 голосов
/ 05 октября 2011

Вы должны использовать правильную обработку типов MIME для ваших ответов. Попробуйте это:

def groups
  @groups = Group.all
  respond_to do |format|
    format.js
  end
end

в конце концов, вы можете конкретнее ответить:

format.js { render layout: false }

Более подробная информация о response_to здесь .

примечание: если ваш контроллер управляет только ответами js, вы можете добавить respond_to :js вверху класса, а затем использовать respond_with @object в своих действиях.

...