Helpex - Trao đổi & giúp đỡ Đăng nhập
77

Tôi đang sử dụng devise cho user auth, nhưng tôi có các mockup đẹp cho các trang đăng ký, đăng nhập, v.v. Tôi đã thực hiện rails generate devise:views Userlệnh và có tất cả các chế độ xem trong thư mục chế độ xem, tuy nhiên, khi tôi thay thế đăng ký / new.html.erb bằng new.html.erb của riêng mình, không có gì thay đổi cũng như không có gì khác biệt. Nó như thể tôi đã làm bất cứ điều gì.

Bất cứ ai biết tôi đang làm gì sai hoặc ít nhất là làm thế nào để tùy chỉnh thành công các chế độ xem

Tái bút Có điều quan trọng cần lưu ý là tôi đã thay đổi lộ trình của devise / register # new thành / signup không?

77 hữu ích 4 bình luận 75k xem chia sẻ
34

Tuyến đường của bạn signuphoặc devise/registrations#newsẽ hiển thị chế độ xem views/devise/registrations/new.html.erb. Có vẻ như bạn đã thực hiện các thay đổi đối với views/user/registrations/new.html.erb, điều này sẽ giải thích tại sao bạn không thấy các thay đổi được thực hiện vì nó không được hiển thị.

Bạn sẽ cần tạo một đường user/registrations_controller.rbmở rộng từ Devise::RegistrationsControllervà hướng /signup tuyến đường của bạn đến user/registrations#newhoặc bạn chỉ có thể thực hiện các thay đổi của mình trực tiếp đối vớiviews/devise/registrations/new.html.erb

Ý tưởng tương tự áp dụng cho các trang đăng nhập ( devise/sessions) của bạn .

Hi vọng điêu nay co ich.

34 hữu ích 2 bình luận chia sẻ
121

câu trả lời trong nháy mắt.

...thay vì

rails generate devise:views User

sử dụng:

rails generate devise:views

Nếu bạn đã làm xong, hãy di chuyển các thư mục được tạo ra từ app/views/Usermột thư mục mới app/views/devise(hoặc chỉ cần đổi tên Userthư mục thành devise, nếu đó là một tùy chọn.)

Các thư mục đó là:

app/views/User/confirmations
app/views/User/mailer
app/views/User/passwords
app/views/User/registrations
app/views/User/sessions
app/views/User/shared
app/views/User/unlocks

Không có thay đổi nào khác là cần thiết.

121 hữu ích 4 bình luận chia sẻ
112

mặc dù đây là một câu hỏi cũ, tôi nghĩ rằng tôi sẽ thêm vào nó để phòng trường hợp có ai đó tình cờ mắc phải nó. Tôi không chắc liệu đây có phải là một bổ sung mới hay không vì câu hỏi ban đầu được hỏi nhưng nếu vậy thì cách tiếp cận đơn giản hơn (hiện đại hơn) là điều này.

trong tệp config/initializers/devise.rbcó khối mã sau:

# ==> Scopes configuration
# Turn scoped views on. Before rendering "sessions/new", it will first check for
# "users/sessions/new". It's turned off by default because it's slower if you
# are using only default views.
# config.scoped_views = false

bằng cách bỏ ghi chú config.scoped_views = falsevà thay đổi giá trị của nó thành true, devise sẽ tự động kiểm tra xem chế độ xem tùy chỉnh có tồn tại hay không và nếu có, hãy phục vụ nó. Như nó nói rằng nó có thêm một số chi phí cho ứng dụng nhưng theo kinh nghiệm của tôi cho đến nay điều này là tối thiểu.

112 hữu ích 5 bình luận chia sẻ
25

Đối với bất kỳ ai vẫn gặp vấn đề với điều này, vấn đề nằm ở cuộc gọi đến rails generate devise:views User. Nó phải rails generate devise:viewsdành cho việc tìm nạp các chế độ xem hiện tại từ Devise Rails Engine. Điều này sẽ tạo ra các chế độ xem phù hợp sẽ hoạt động với các tuyến mặc định.

25 hữu ích 1 bình luận chia sẻ
21

Sau khi tạo các chế độ xem tùy chỉnh của bạn, ví dụ:

rails generate devise:views User

Bật scoped_viewstrongconfig/initializer/devise.rb

view config.scoped_views = true

Và bạn đã hoàn thành.

21 hữu ích 0 bình luận chia sẻ
12

Việc sử dụng rails g devise:views Usercho phép bạn tùy chỉnh khi bạn có nhiều hơn một vai trò.

cách thích hợp để làm điều này là đi vào thư mục devise.rbtrong config/initializer/thư mục của bạn

và ghi chú và thiết lập config.scoped_views = true.

bây giờ bạn có thể chỉnh sửa các tệp erb xem mà không gặp bất kỳ sự cố nào

12 hữu ích 1 bình luận chia sẻ
12

Tôi đã gặp vấn đề tương tự cho đến khi tôi quay lại và đọc tài liệu sáng tạo :)

Sau khi rails generate devise:viewschắc chắn bạn đi vào initializers/devise.rbvà thiết lập config.scoped_views = true. Điều này được giải thích trong tài liệu phát triển tại https://github.com/plataformatec/devise cũng như trong các devise.rbnhận xét.

Sau khi tôi làm điều này, các lượt xem của riêng tôi views/usersbắt đầu hiển thị thay vì các lượt xem trong gem.

12 hữu ích 0 bình luận chia sẻ
2

Để tham khảo trong tương lai, bạn chỉ có thể đổi tên thư mục từ devise => user và ngược lại và rails sẽ tìm thấy một tuyến đường.

2 hữu ích 1 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ ruby-on-rails devise views , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading