2012-01-24 33 views
7

Tôi đang sử dụng Rails 3.2.0 và Devise 2.0.0.rc2. Khi tôi chạy thông số kỹ thuật của mình, tôi nhận được cảnh báo không dùng nữa mà tôi không thấy khi nào tôi thường khởi động máy chủ Rails của mình.Devise 2.0 'layout_by_resource' cảnh báo ngừng sử dụng khi chạy thông số kỹ thuật

$ rake 
.DEPRECATION WARNING: Layout found at "devise" for 
DeviseController but parent controller set layout to :layout_by_resource. 
Please explicitly set your layout to "devise" or 
set it to nil to force a dynamic lookup. 
(called from realtime at 
/Users/foo/.rbenv/versions/1.9.2-p290/lib/ruby/1.9.1/benchmark.rb:310) 

/app/controllers/application_controller.rb tôi trông như thế:

class ApplicationController < ActionController::Base 
    protect_from_forgery 

    layout :layout_by_resource 

    protected 

    def layout_by_resource 
    if devise_controller? 
     if resource_name == :agent && action_name == 'new' 
     nil 
     elsif resource_name == :admin && action_name == 'new' 
     nil 
     else 
     'devise' 
     end 
    else 
     'application' 
    end 
    end 

end 

Bất cứ ý tưởng tại sao tôi nhìn thấy những cảnh báo này?

Trả lời

3

Vì Rails 3.2 bố cục sẽ tự động được tìm kiếm. Khi bạn sử dụng một khung nhìn trong thư mục 'devise', Rails đủ thông minh để tìm kiếm bố cục 'devise' trong thư mục layout. Việc xóa mã này sẽ giải quyết cảnh báo khấu hao.

Tuy nhiên, điều này có nghĩa là tài khoản quản trị viên và đại lý đều sử dụng bố cục phát sinh. Tôi không biết cách sửa lỗi trắng này nhận được cảnh báo khấu hao tương tự.

6

Nếu bạn muốn loại bỏ các thư, giải pháp đơn giản nhất là thực sự đổi tên mẫu bố cục của bạn thành một thứ khác ngoài devise.html.erb, f.e. đến devise_layout.html.erb. Tất nhiên bạn điều chỉnh hàm layout_by_resource để khớp với tên mới.

Điều này sẽ ngừng các thông báo không dùng nữa trong các thử nghiệm của bạn và làm cho chúng có thể đọc lại.

+0

Điều này phù hợp với tôi. – Drew

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