2013-06-13 40 views
0

我正在通过Ruby on Rails 2nd Ed。,Hartl工作。在3.3.3节中,我用一些嵌入式Ruby删除了一些静态文本后,我的测试失败了。测试通过以前没有问题。Ruby on Rails嵌入式红宝石生成错误

rspec的

require 'spec_helper' 

    describe "Home pages" do 

     describe "Home page" do 
     it "should have the h1 'Sample App'" do 
      visit '/static_pages/home' 
      page.should have_selector('h1', :text => 'Sample App') 
     end 

     it "should have the title 'Home'" do 
      visit '/static_pages/home' 
      page.should have_selector('title', :text => "Ruby on Rails Tutorial Sample     App | Home") 
     end 
     end 
    end 

home.html.erb

<% provide (:title, 'Home') %> 
    <!DOCTYPE html> 
    <html> 
     <head> 
      <title>Ruby on Rails Tutorial Sample App | <%= yield(:title) %></title> 
     </head> 
     <body> 
      <h1>Sample App</h1> 
      <p> 
      This is the home page for the 
      <a href="http://railstutorial.org/">Ruby on Rails Tutorial</a> 
      sample application. 
      </p> 
     </body> 
    </html> 

从控制台

C:\Sites\rails_projects\sample_app>bundle exec rspec   spec/requests/static_pages_spec.rb 
    ?[31mF?[0m?[31mF?[0m?[32m.?[0m?[32m.?[0m?[32m.?[0m?[32m.?[0m 

    Failures: 

     1) Home pages Home page should have the h1 'Sample App' 
     ?[31mFailure/Error:?[0m ?[31mvisit '/static_pages/home'?[0m 
     ?[31mActionView::Template::Error:?[0m 
      ?  [31mC:/Sites/rails_projects/sample_app/app/views/static_pages/home.html.erb:1: syntax   error, 
    unexpected ',', expecting ')'?[0m 
      ?[31m...putBuffer.new; provide (:title, ' Home') ?[0m 
      ?[31m...        ^?[0m 
      ?  [31mC:/Sites/rails_projects/sample_app/app/views/static_pages/home.html.erb:1: syntax   error, 
    unexpected ')', expecting keyword_end?[0m 
      ?[31m....new; provide (:title, ' Home') ?[0m 
      ?[31m...        ^?[0m 
    ?[36m  # <internal:prelude>:10:in `synchronize'?[0m 
    ?[36m  # ./spec/requests/static_pages_spec.rb:7:in `block (3 levels) in <top   (required)>'?[0m 

     2) Home pages Home page should have the title 'Home' 
     ?[31mFailure/Error:?[0m ?[31mvisit '/static_pages/home'?[0m 
     ?[31mActionView::Template::Error:?[0m 
      ?  [31mC:/Sites/rails_projects/sample_app/app/views/static_pages/home.html.erb:1: syntax   error, 
    unexpected ',', expecting ')'?[0m 
      ?[31m...putBuffer.new; provide (:title, ' Home') ?[0m 
      ?[31m...        ^?[0m 
      ?  [31mC:/Sites/rails_projects/sample_app/app/views/static_pages/home.html.erb:1: syntax   error, 
    unexpected ')', expecting keyword_end?[0m 
      ?[31m....new; provide (:title, ' Home') ?[0m 
      ?[31m...        ^?[0m 
    ?[36m  # <internal:prelude>:10:in `synchronize'?[0m 
    ?[36m  # ./spec/requests/static_pages_spec.rb:12:in `block (3 levels) in <top   (required)>'?[0m 

    Finished in 0.51562 seconds 
    ?[31m6 examples, 2 failures?[0m 

    Failed examples: 

    ?[31mrspec ./spec/requests/static_pages_spec.rb:6?[0m ?[36m# Home pages Home page   should have the h1 'Sample App'?[0m 
    ?[31mrspec ./spec/requests/static_pages_spec.rb:11?[0m ?[36m# Home pages Home page   should have the title 'Home'?[0m 

错误任何帮助表示赞赏

回答

2

我认为你需要删除空白在t之前他圆括号

provide (:title, 'Home') 

应该

provide(:title, 'Home') 
+0

它现在的工作。这是空白。谢谢。我知道它必须是简单的东西,就是看不到它。好工作muttonlamb! – JanuskaE

+0

就像未来的FYI一样,Ruby可以对括号做些挑剔。忽略括号(显然)时可以留空白,但如果将它放在方法调用和括号之间,有时会产生混淆。尽管这并不适用,但最好保持一致,并确保在括号之前不留空格 – muttonlamb