预期的反应是成功的,但是302

我有以下articles_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" 

当我使用以下articles_test_controller内容从终端运行rake时:

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

我失败了

 Expected response to be a , but was  

我读到了重定向,但我似乎无法解决这个问题。

要调试您丢失的模板问题,您可以尝试以下方法:

 format.html { render 'myarticles' } 

关于您的规格失败,您可能需要在测试中拥有当前用户会话,否则它会认为您是已注销的用户并将您重定向到登录页面。 我没有使用Devise,但看起来README在“测试助手”下有一些建议: https : //github.com/plataformatec/devise