7

昨日RubyonRailsを始めたばかりです。私のlayouts/application.html.erbには、次のものがあります。

<!DOCTYPE html>
<html>
  <head>
    <title><%= full_title(yield(:title)) %></title>
    <%= stylesheet_link_tag    "application", media: "all" %>
    <%= javascript_include_tag "application" %>
    <%= csrf_meta_tags %>  
  </head>
  <body>
    <%= render 'layouts/header' %>
    <div class="container">
      <%= yield %>
    </div>
    <%= render 'layouts/footer' %>
  </body>
</html> 

php-> codeigniterの背景から来て、renderは$ this-> load-> view('');に似ていると思います。codeigniterで。
これは問題なく動作しますが、複数のアプリケーションレイアウトファイルが必要です。

  1. レイアウト/アプリケーションのデフォルト
  2. レイアウト/アプリケーション全幅(全幅ページの場合)
  3. 等々..

codeigniterでは、使用するテンプレート/レイアウトファイルを宣言するだけですが、Ruby on Railsは少し魔法のようです(多くのことを行います)ので、デフォルトでアプリケーションレイアウトを呼び出すと思います。必要なレイアウトファイルを選択する方法があるかどうか疑問に思いました。

4

2 に答える 2

15

@Deefourは適切なリソースを提供しました。これは、Rails4でこれを実装する方法の簡単な例です。

コントローラでは、特定のアクションのレイアウトをフェッチする場所を指定し、使用するレイアウトを非常に細かく制御できます。

class PagesController < ApplicationController
  layout "fullwidth", except: [:index, :faqs]

  def popout
    # Render this action with specific layout
    render layout: "popout"
    #renders with views/layouts/popout.html.erb
  end

  def index
    #renders with views/layouts/application.html.erb
  end

  def about_us
    #renders with views/layouts/fullwidth.html.erb
  end

  def team
    #renders with views/layouts/fullwidth.html.erb
  end

  def logo
    #renders with views/layouts/fullwidth.html.erb
  end

  def faqs
    #renders with views/layouts/application.html.erb
  end
end

application.html.erbは、railsの標準レイアウトファイルです。私はそれが存在すると思います、そしてそれはデフォルトのフォールバックです!

于 2014-03-17T16:17:06.707 に答える
8

あなたは方法を探していますlayout

このRailsガイドは、特にレイアウトの検索に役立ちます。ここで詳細を説明しますが、前述のドキュメントとガイドには、十分な例と使用方法が記載されています。

于 2013-03-05T16:03:40.230 に答える