2013-03-05 8 views
7

Chỉ mới bắt đầu Ruby on Rails hôm qua. Trong bố trí của tôi/application.html.erb tôi có:Nhiều bố cục trong ror

<!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> 

Đến từ php -> CodeIgniter nền, tôi giả làm cũng tương tự như $ this-> tải-> view (''); trong codeigniter.
Mặc dù điều này hoạt động tốt, tôi muốn có nhiều ứng dụng file bố trí ví dụ như

  1. bố trí/ứng dụng mặc định
  2. bố trí/ứng dụng fullwidth (dành cho trang fullwidth)
  3. và vân vân ..

Trong trình mã hóa, bạn chỉ cần khai báo tệp mẫu/bố cục nào bạn muốn sử dụng nhưng như ruby ​​trên đường ray là một chút huyền diệu (Nó có nhiều thứ cho bạn), tôi giả sử nó gọi bố cục ứng dụng bằng de lỗi. Tôi đã tự hỏi nếu có một cách để chọn tập tin bố trí tôi muốn?

Trả lời

8

Bạn đang tìm phương thức layout.

This Rails Guide sẽ giúp bạn, cụ thể là Finding Layouts. Tôi muốn cung cấp thêm chi tiết ở đây, nhưng tài liệu hướng dẫn và hướng dẫn đã đề cập trước đó cung cấp quá nhiều ví dụ và hướng dẫn sử dụng.

+0

Oh cảm ơn, và tôi nghĩ rằng tôi đã đọc xong trang đó. – Skyalchemist

14

@Deefour cho các nguồn lực đúng, đây là một ví dụ nhanh thoải mái về cách bạn có thể thực hiện điều này trong Rails 4.

Trong một bộ điều khiển, bạn có thể chỉ định nơi bạn muốn lấy những gì bố trí cho một hành động nào đó và có kiểm soát hạt rất tốt đẹp trên đó bố trí được sử dụng.

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 là đường ray tiêu chuẩn bố trí tập tin. Tôi cho rằng nó hiện diện và đó là dự phòng mặc định!

+0

Tất cả những gì không được định nghĩa sẽ là dự phòng của application.html.erb? –

+0

'' 'application.html.erb''' là tệp sơ đồ bố trí chuẩn của đường ray. Tôi cho rằng nó là hiện tại, và nó là dự phòng mặc định, vâng. – mahatmanich