2011-05-09 31 views
4

我想让错误闪现出现在railstutorial.org示例应用程序中。到目前为止,这是我所做的。谁能帮我找到的错误:RailsTutorial登录闪光灯无法正常工作

我RSPEC测试失败:

1) SessionsController POST 'create' invalid signin should have a flash.now message 
Failure/Error: flash.now[:error].should =~ /invalid/i 
expected: /invalid/i 
    got: nil (using =~) 
./spec/controllers/sessions_controller_spec.rb:27 

控制器代码:

def create 
    user = User.authenticate(params[:session][:email], 
    params[:session][:password]) 
    if user.nil? 
    flash.now[:error] = "Invalid email/password combination." 
    @title = "Sign in" 
    render 'new' 
    else 
    # Sign the user in and redirect to the user's show page. 
    end 
end 

测试代码:

describe "POST 'create'" do 

describe "invalid signin" do 

    before(:each) do 
    @attr = { :email => "[email protected]", :password => "invalid"} 
    end 

    it "should re-render the new page" do 
    post :create, :session => @attr 
    response.should render_template('new') 
    end 
    it "should have a flash.now message" do 
    post :create, :session => @attr 
    flash.now[:error].should =~ /invalid/i 
    end 
end 
+0

是的,再次,“尝试发布此之前,我的帐户搞砸了”,现在我不能编辑我原来的帖子,包括更多的代码。 – jsttn 2011-05-10 00:22:10

+0

我看到了问题。编辑正在等待批准。我已经在其他问题中批准了您的修改请求。您应该删除其中一个问题。另外,我要求版主解除这个问题并关闭另一个(但你应该自己删除它) – Zabba 2011-05-10 00:35:01

+0

是的,非常感谢。我正在学习我的方式! – jsttn 2011-05-10 00:57:42

回答

2

它看起来就像在你app/controllers/sessions_controller.rb你有一个创建方法declar在底部,只是说:

def create 
    render 'new' 
end 

第二个声明取代了您在文件中早期的预期创建方法。只需删除这三行(文件中的20-22),并且您的规格以优异的颜色通过,我的意思是只有一种颜色,即绿色。

+0

在那里与[控制器中的方法重新定义](http:// stackoverflow .COM /问题/ 372652 /什么,是最红宝石陷阱-A-新手,应待警告,大约/ 5508658#5508658)。 GRR。 – Zabba 2011-05-12 06:50:10

+0

太棒了!感谢您的帮助,并感谢Zabba清理邮件问题。 – jsttn 2011-05-12 19:25:34

+0

不要让这让你灰心 - 这些事情甚至发生在[我们最好的](http://ryanbigg.com/2011/03/code-doesn-t-protect-against-stupid)。请继续阅读RailsTutorial.org的书 - 它很棒,实际上我自己是如何学习Rails的! – 2011-05-14 05:05:01