预期响应成功,但为302



我有以下文章_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 <:success>, but was <302>

我读过关于重定向到的文章,但我似乎无法解决这个问题。

要调试丢失的模板问题,您可以尝试以下操作吗:

format.html { render 'myarticles' }

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

相关内容

最新更新