Ожидалось, что ответ будет успешным, но был 302

У меня есть следующие article_controller:

def myarticles
    @myarticles = current_student.articles.all
    respond_to do |format|
        format.html
        format.xml  { render :xml => @myarticles }
    end
end

def create
  @article = current_student.articles.new(params[:article])
    respond_to do |format|
    if @article.save
      format.html { redirect_to(@article, :notice => 'επιτυχώς.') }
      format.xml{render:xml => @article, :status => :created, :location => @article}
    else
      format.html { render :action => "new" }
      format.xml { render :xml => @article.errors, :status => :unprocessable_entity}
    end
  end
end

на моем терминале rake routes дает мне:

myarticles_articles GET /articles/myarticles(.:format)  {:action=>"myarticles", :controller=>"articles"}

мой config/routes.rb

Sample::Application.routes.draw do
  devise_for :students

  resources :articles do
    collection do
        get 'about'
        get 'all'
        get 'myarticles'
    end
end

root :to => 'articles#index'
end

и мое представление находится в /app/views/articles/myarticles.html.erb

Когда в моем браузере я перехожу к

http://127.0.0.1:3000/articles/myarticles

У меня ошибка:

Template is missing

Missing template articles/myarticles with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>[:html], :locale=>[:en, :en]} in view paths "/home/panagiotis/projects/sample/app/views", "/home/panagiotis/.rvm/gems/ruby-1.9.2-p290/gems/devise-1.5.3/app/views"

и когда я запускаю rake из терминала со следующим содержимым article_test_controller:

test "should get myarticles signed in" do
    get :myarticles
    assert_response :success
end

я получаю отказ

Expected response to be a <:success>, but was <302>

Я читал о перенаправлении на, но я не могу решить эту проблему.


person Panagiotis Petridis    schedule 16.02.2012    source источник
comment
В свойствах файла myarticles.html.erb разрешение: я владелец и имею права на чтение и запись.   -  person Panagiotis Petridis    schedule 17.02.2012
comment
Я глупый. Здесь пишите мои статьи и в каталоге пишите мои статьи. Просто невероятно!   -  person Panagiotis Petridis    schedule 17.02.2012


Ответы (1)


Чтобы отладить проблему с отсутствующим шаблоном, не могли бы вы попробовать что-то вроде:

format.html { render 'myarticles' }

?

Что касается сбоя вашей спецификации, вам, вероятно, потребуется текущий сеанс пользователя в ваших тестах, иначе он думает, что вы вышли из системы, и перенаправляет вас на страницу входа. Я не использовал Devise, но похоже, что в README есть несколько предложений в разделе «Помощники по тестированию»: https://github.com/plataformatec/devise

person bdon    schedule 16.02.2012
comment
Вношу такие изменения: на article_controller.rb ставлю после response_to do |format| --› format.html { render 'myarticles' } и на article_controller_test.rb, помещенный после того, как test должен получить мои статьи, подписанные do --›sign_in student(:student2) (у меня на test/fixtures/students.yml student2). Скопируйте и вставьте мой шаблон с пути /app/views/articles/myarticles.html.erb в /app/views/myarticles.html.erb, но теперь у меня есть ошибка (из-за сбоя) с описанием ActionView::MissingTemplate: Отсутствующие статьи шаблона/ мои статьи с {:handlers=›[:erb, :rjs ... - person Panagiotis Petridis; 17.02.2012