2012-06-18 45 views
9

Tôi đang cố gắng suy nghĩ để hiển thị một mẫu bố cục khác với các giá trị mặc định cho các khía cạnh nhất định.Thay đổi thiết lập bố cục mặc định

Tôi làm việc này khi người dùng truy cập trang đăng nhập nhưng tôi cần hiển thị bố cục khác để đăng ký, quên mật khẩu và đặt lại.

Đây là mã hiện trong bộ điều khiển ứng dụng của tôi:

layout :layout 

    private 
    def layout 
    # only turn it off for login pages: 
    is_a?(Devise::SessionsController) ? "login" : "application" 
    # or turn layout off for every devise controller: 
    #devise_controller? && "application" 
    end 

Trả lời

25

Nếu bạn đặt tên cho bố cục thay thế devise.html.erb, thì trình điều khiển của đá quý sẽ tự nhiên sử dụng nó mà không cần phải hỏi. Tiết kiệm một số mã.

+0

Đây là tài liệu hiển thị tất cả các cách có thể để đạt được điều này: https://github.com/plataformatec/devise/wiki/How-To:-Create-custom-layouts – akz92

3

Bạn không cần phải xử lý các bố trí bằng cách tự của bạn, chỉ cần làm:

rails generate devise:views 

Sau đó, nhìn vào thư mục devise tại thư mục lượt xem, bạn sẽ thấy tất cả các biểu mẫu bạn cần tùy chỉnh

+0

thực hiện điều đó, nhưng nó vẫn sử dụng mẫu ứng dụng của tôi, có một số thông tin tôi không muốn hiển thị cho đến khi người dùng đăng nhập. Không phải lượt xem như vậy, bố cục của các chế độ xem đó được hiển thị trong phạm vi –

+0

, Tôi không phải chạm vào bố trí, tất cả những gì tôi đã làm là tạo ra các giao diện: lượt xem, sau đó, tôi đã tùy chỉnh chế độ xem được tạo dễ dàng, được hiển thị ở mức mặc định là – simo

30

Thêm dòng mã này vào ứng dụng của bạn.rb:

config.to_prepare do 
    Devise::SessionsController.layout "your_layout_name" 
    Devise::RegistrationsController.layout "your_layout_name" 
    Devise::ConfirmationsController.layout "your_layout_name" 
    Devise::UnlocksController.layout "your_layout_name" 
    Devise::PasswordsController.layout "your_layout_name" 
end 

Nếu bạn muốn bố trí tương tự cho tất cả Vạch quan điểm, trừ khi người dùng chỉnh sửa dữ liệu của nó, bạn có thể có một cái gì đó như thế này:

config.to_prepare do 
    Devise::SessionsController.layout "your_layout_name" 
    Devise::RegistrationsController.layout proc{ |controller| user_signed_in? ? "application" : "your_layout_name" } 
    Devise::ConfirmationsController.layout "your_layout_name" 
    Devise::UnlocksController.layout "your_layout_name"    
    Devise::PasswordsController.layout "your_layout_name"   
end 

Để biết thêm thông tin bạn có thể đọc article

+0

vấn đề duy nhất với mã ở trên. có hiệu lực khi người dùng đăng nhập hợp lệ chỉnh sửa có mật khẩu –

+0

Tôi đã cập nhật câu trả lời của mình – zolter

+0

có vẻ như nó có thể thực hiện mẹo, nhờ zolter :) –

Các vấn đề liên quan