2011-08-17 45 views
39

Tôi đang cố gắng tạo trang Người dùng show (sẽ hoạt động như một trang hồ sơ) nhưng tôi đang bối rối về cách thực hiện việc này bằng Devise. Nó không có vẻ như mặc dù Devise đi kèm với bất kỳ loại định nghĩa show - là có cách nào tôi có thể truy cập các bộ điều khiển Devise đang thực hiện để làm cho một hoặc tôi phải ghi đè lên chúng?Tạo trang hiển thị `Người dùng` bằng Devise

Trả lời

62

Bạn nên tạo ra một users_controller mà kế thừa từ application_controller và xác định có phương pháp tùy chỉnh show của bạn. Đừng quên tạo chế độ xem và lộ trình cho nó. Ex:

#users_controller.rb 
def show 
    @user = User.find(params[:id]) 
end 

#in your view 
<%= @user.name %> 

#routes.rb 
match 'users/:id' => 'users#show', via: :get 
# or 
get 'users/:id' => 'users#show' 
# or 
resources :users, only: [:show] 
+0

Vì vậy, tôi đã làm tất cả những điều đó, tôi chỉ thay đổi 'show' thành' index' mà làm cho nó '@users = Users.all' nhưng tôi nhận được lỗi này: uninitialized constant UsersController :: Users. Tìm thấy lỗi của tôi, phải là '@users = @ User.all' – tcatchy

+0

Khi tôi làm điều này, làm cách nào tôi có thể liên kết đến hồ sơ người dùng cụ thể và mở/truy cập mà không cần đăng nhập? Cảm ơn! – westman2222

+0

Mã trên sẽ làm cho người dùng có thể truy cập trang (hồ sơ) mà không cần đăng nhập –

-11

bạn có thể tạo các chế độ xem được sử dụng bằng cách đưa ra, do đó bạn có thể thay đổi chế độ xem theo ý muốn.

rails g devise:views 
+4

nhưng vẫn không có trang hiển thị cho người dùng. chỉ các trang mới và chỉnh sửa. –

+1

câu trả lời xấu, đọc câu hỏi đầu tiên, có vẻ như oyu đã không làm việc với phát minh trước khi – SsouLlesS

+0

'rails g devise: views' tạo ra các khung nhìn cho mới và chỉnh sửa. Không có trang hiển thị. Hãy thử mã và xem các tuyến đường của bạn, không có chương trình nào. –

32

Đừng quên rằng người dùng của bạn đường nên được dưới các tuyến đường người dùng devise_for, như thế này:

#routes.rb 
devise_for :users 
resources :users, :only => [:show] 

Ngoài ra, nếu bạn đang sử dụng một tên người dùng hoặc email như là tiểu học chìa khóa thay vì id thông thường, bạn nên tránh những xung đột định tuyến bằng cách tuyên bố tuyến đường của bạn như sau:

#routes.rb 
devise_for :users, :path_prefix => 'd' 
resources :users, :only => [:show] 
8

thấy CURRENT_USER/other_user hồ sơ với devise:

After installing devise

Tạo một người dùng điều khiển:

rails generate controller Users 

Sau đó tạo một action show và tìm người dùng với id params:

def show 
@user = User.find(params[:id]) 
end 

Tạo một file show.html.erb trong Bảng điều khiển xem thư mục:

<%= @user.email %> 

Liên kết tới người dùng chương page:

<%= link_to "current_user_show", current_user %> 

Bây giờ nếu bạn muốn xem các cấu hình khác tạo ra một hành động chỉ số trong bộ điều khiển người dùng:

def index @users = User.all end 

Tạo một index.html.erb trong giao diện thư mục User thì:

<% @users.each do |user| %> 
<%= link_to user.username, user %> 
<%= user.email %> 
<% end %> 

Các liên kết này sẽ là:

<%= link_to "show_index_of_users", users_path %> 

này sẽ liên kết bạn đến index.html.erb người dùng tập tin đó, bạn sẽ tạo ra một vòng lặp và liên kết đến hồ sơ người dùng:

<% @users.each do |user| %> 
<%= link_to user.username, user %> 
<%= user.email %> 
<% end %> 

này nên làm việc!

+0

Không cần phải cấu hình/tuyến đường? –

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