1

Michael Hartl (Screen Cast) による Rails チュートリアルを実行しています。タイトル ヘルパーに関する第 4 章の and の問題に遭遇しました。

すべてを確実に理解できるように、コードに独自のひねりを加えています。しかし、これについては非常によく似ており、なぜこのように動作しているのかよくわかりません。

コードは次のとおりです。

Application.html.erb

<!DOCTYPE html>
<html>
  <head>
    <%- Rails.logger.info("Testing: #{yield(:title)}") %>
    <title><%= full_title(yield(:title)) %></title>
    <%= stylesheet_link_tag    "application", :media => "all" %>
    <%= javascript_include_tag "application" %>
    <%= csrf_meta_tags %>
  </head>
  <body>
    <%= yield %>
  </body>
</html>

Application_helper.rb

module ApplicationHelper
  def full_title(page_title)
    full_title = "Ruby on Rails Tutorial App"
    full_title += " | #{page_title}" unless page_title.blank?
  end
end

Home.html.erb

<h1><%= t(:sample_app) %></h1>
<p>
  This is the home page for the <a href="http://railstutorial.org/">Ruby on Rails Tutorial</a> sample application
</p>

about.html.erb

 <% provide(:title, t(:about_us)) %>
 <h1><%= t(:about_us) %></h1>
 <p>
   The <a href="http://railstutorial.org/">Ruby on Rails Tutorial</a> is a project to make a book and screencast to teach web development with <a href="http://railstutorial.org/">Ruby on Rails</a>. This is the sample application for the tutorial.
 </p>

何が起こるか: about ページのように提供メソッドを設定すると、コードは正常に動作します。しかし、そうしないと、ヘルパーを呼び出すことさえないようです。タイトルが返されないためだと思います。私が間違っていることについてのアイデアはありますか?

ご協力ありがとうございました。

編集:これは修正です。最後の行が何も返さず、それが私のコードが機能しない理由であると指摘してくれた Paul に感謝します。大文字と小文字を区別しないものを返すように変更しました。

Application_helper.rb

module ApplicationHelper
  def full_title(page_title)
    full_title = "Ruby on Rails Tutorial App"
    page_title.present? ? (full_title += " | #{page_title}") : full_title
  end
end
4

1 に答える 1

0

ヘルパー メソッドの最後の行に問題があるようです。空白full_titleの場合は何も返されないためpage_titleです (発生するのは、ローカル変数full_titleが割り当てられることだけです)。本に書かれている方法に戻してみて、動作するかどうかを確認してください。

于 2012-07-01T21:11:13.633 に答える