trong đơn đăng ký của tôi, tôi có mô hình "Người dùng". Mỗi người dùng có thể có nhiều địa chỉ (email) được định nghĩa trong mô hình "Địa chỉ":Một bộ điều khiển, các chế độ xem khác nhau cho người dùng và quản trị viên thông thường
Class User < ActiveRecord::Base
has_many :addresses
def is_authorized(op)
# returns true or false
end
def is_owned_by(user)
# returns true or false
end
end
Class Address < ActiveRecord::Base
belongs_to :user
end
Bên trong lớp AddressController, hiện đang đăng nhập người dùng có sẵn trong "@user" biến ví dụ. Bộ điều khiển ngăn người dùng thông thường chỉnh sửa, xóa, xem các địa chỉ vv không thuộc về họ - nhưng anh ta cho phép người dùng quản trị chỉnh sửa chúng. Lớp AddressController có thể hỏi AddressModel nếu người dùng hiện đang đăng nhập đang thực hiện các hoạt động bình thường hoặc superuser.
Điều này tất cả hoạt động độc đáo và cập nhật cơ sở dữ liệu được thực hiện như mong đợi, tuy nhiên, tôi thực sự muốn có chế độ xem HTML khác nhau tùy thuộc vào phương thức hoạt động. Tôi chỉ có thể nghĩ đến hai cách để đạt được điều đó:
- Tận dụng phương thức hoạt động (bình thường/đặc quyền) nổi tiếng trong lớp AddressController (sử dụng một biến Ví dụ, ví dụ @privileged) và sử dụng một "nếu" tuyên bố trong chế độ xem.
- Sử dụng thứ gì đó như "after_filter" trong bộ điều khiển địa chỉ để hiển thị bố cục khác.
Nếu có thể hiển thị kết quả thực hiện một bộ điều khiển trong hai bố cục hoàn toàn khác nhau, tùy thuộc vào chế độ hoạt động, cách tốt nhất để đạt được điều đó là gì?
Cảm ơn trước Stefan
Cảm ơn bạn. Nhưng có vẻ như nếu tôi làm điều này, tôi sẽ rời khỏi con đường "quy ước về cấu hình". Tôi hơi lo lắng - đây là ứng dụng Rails đầu tiên của tôi - liệu tôi có nên phân kỳ từ những gì mọi người khác dường như làm không? – cite
Vâng, được cho là quy ước để hiển thị một chế độ xem cho một hành động, nhưng tôi có thể thấy những gì bạn đang nhận được. Nếu bạn chỉ tìm kiếm các bố trí khác nhau thì giải pháp của Staelen là một giải pháp tốt. Nếu bạn thực sự muốn hiển thị các khung nhìn khác nhau tùy thuộc vào logic trong hành động thì tôi không chắc chắn nó đủ gần với quy ước cơ bản để tránh xa việc không chỉ rõ khung nhìn nào bạn muốn render. – Shadwell
Tôi nghĩ rằng tôi sẽ cố gắng giải pháp của Staelen cho bố trí và một của bạn cho các mẫu được trả lại. Cảm ơn một lần nữa. – cite