Hướng dẫn sử dụng class Support trong model
Trong coding standard của Framgia có quy định rõ việc chia sẻ các biến instance trong controller: "Không chia sẻ giữa controller và view từ 2 biến instance trở lên" Làm thế nào để có thể truyền nhiều biến instance từ controller qua view? Trong trường hợp bạn muốn share từ 3 biến instance ...
Trong coding standard của Framgia có quy định rõ việc chia sẻ các biến instance trong controller: "Không chia sẻ giữa controller và view từ 2 biến instance trở lên"
Làm thế nào để có thể truyền nhiều biến instance từ controller qua view?
Trong trường hợp bạn muốn share từ 3 biến instance trở lên, ví dụ, cần truyền các biến sau từ UsersController qua view:
def show @book_favorites = book_favorites @book_reads = book_reads @book_readings = book_readings end
Để giải quyết vấn đề này chúng ta sẽ giải quyết như sau:
- Tạo class UserSupport trong thư mục: models/supports.
class Supports::UserSupport attr_reader :user def initialize user @user = user end def reads @user.reads end def readings @user.readings end def favorites @user.favorites end end
(Trong class này bạn định nghĩa các method để lấy dữ liệu.)
- Trong UsersController chỉ cần khao báo như sau:
@support = Support::UserSupport.new(@user)
3.Lấy lại dữ liệu trong users/show.html.erb
<%= render partial: "book_status/book_status", collection: @support.favorites, as: :book_status %> <%= render partial: "book_status/book_status", collection: @support.reads, as: :book_status %> <%= render partial: "book_status/book_status", collection: @support.readings, as: :book_status %>
Chi tiết tham khảo tại: https://github.com/framgia/brs_34/pull/11