2012-12-05 2 views
1

Michael Hartl의 RoR 튜토리얼 : 5 장 말미에있는 실습은 RSpec 테스트를 단순화하는 것을 포함합니다.M Hartl 's Ruby on Rails 튜토리얼 홈 페이지의 5 장 사용자 정의 제목

5.37 (http://ruby.railstutorial.org/chapters/filling-in-the-layout#sec-layout_exercises)은 홈 페이지에 대한 몇 가지 테스트를 정의합니다. 파일 스펙/도우미/application_helper_spec.rb에서 : 없음 "루비를 "루비 온 레일즈 튜토리얼 샘플 앱 " 그리고 :

require 'spec_helper' 

describe ApplicationHelper do 

    describe "full_title" do 
    . 
    . 
    . 
    . 
    it "should not include a bar for the home page" do 
     full_title("").should_not =~ /\|/ 
    end 
    end 
end 

이 시험은 내가 홈 페이지 제목 디스플레이가 필요 통과 레일 튜토리얼 샘플 응용 프로그램 홈 "

그러나 튜토리얼에서는 그 변경을 코딩하는 방법을 안내하지 않습니다. 여기

내가 무엇을 시도했다입니다 : 응용 프로그램/뷰/static_pages/home.html.erb에서

:

  1. 제거 :

    <% provide(:title, 'Home') %>

에서 app/views/layouts/application.html.erb 태그를 다음으로 편집 :

<title> 
<% if :title 
    full_title = "Ruby on Rails Tutorial Sample App | " && yield(:title) 
else 
    full_title = "Ruby on Rails Tutorial Sample App" 
end %> 
<%= print full_title %> 
</title> 

기타 멍청한 두뇌가 소집 할 수있는 다른 변형입니다. 페이지가 제공되지 제목이 없습니다

경우,

"레일 튜토리얼 샘플 응용 프로그램에 루비"를 반환 루비 레일 튜토리얼 샘플 응용 프로그램에 "반환 제공 제목이있는 경우 : 는 여기에 내가 달성하기 위해 노력하고있어입니다 | #PageTitle "

모든 의견을 환영합니다.

+0

빠른 설명으로 컨트롤러에 @full_title = ___ 값을 설정해야합니다. 다음과 같이 바 (bar)와 제목 (title)을 연결할 수있는 제목이있는 경우 컨트롤러에 추가 컨디셔닝을 할 수 있습니다. – wrhall

+0

@ 감사합니다. @full_title 및 full_title을 사용해 보았습니다. 나는 또한 <% = print @full_title %> 대신'<% = yield (@full_title) %>'을 시도했습니다. – Chiperific

+0

게시물을 개선 한 편집을 롤백 한 이유는 무엇입니까? – Sam

답변

5

어떨까요?

http://ruby.railstutorial.org/chapters/rails-flavored-ruby#code-title_helper

module ApplicationHelper 

    # Returns the full title on a per-page basis. 
    def full_title(page_title) 
    base_title = "Ruby on Rails Tutorial Sample App" 
    if page_title.empty? 
     base_title 
    else 
     "#{base_title} | #{page_title}" 
    end 
    end 
end 

그냥보기 내부의 메소드를 호출합니다. 그가 말한대로 <title><%= full_title(yield(:title)) %></title>과 같아야합니다.

+1

와우. 나는 3 장과 4 장을 뒤져서 어떻게 든 이것을 놓쳤다. 정말 고맙습니다! – Chiperific

관련 문제