2012-01-02 25 views
11

Từ hiểu biết của tôi, người trợ giúp chủ yếu được sử dụng để xóa các chế độ xem từ một số logic cụ thể cho từng chế độ xem.Sử dụng trình trợ giúp Rails để hiển thị partials

Nhưng về dự án hiện mới của tôi (di sản ứng dụng), tôi đã vấp phải rất nhiều người giúp đỡ mà trông như thế này

def itemprepare 
    render :partial => 'items/itemlist_summary' 
end 

Đây có phải là đúng? Hiển thị một phần cho tôi có vẻ giống như một cái gì đó bạn muốn làm trong chế độ xem, vì nó không bao gồm bất kỳ logic nào cần được trừu tượng hóa.

Tôi có nên chỉ nội tuyến tất cả những người trợ giúp này không?

Trả lời

8

Hiển thị một phần không thuộc về người trợ giúp. Người trợ giúp sẽ giúp bạn làm những việc có chứa logic. Logic không thuộc về bộ điều khiển trừ khi nó là logic để render partials và quyết định xem một cái gì đó có nên được hiển thị hay không.

0

Chúng tôi có một vài người trợ giúp như vậy trong dự án của chúng tôi, nhưng hầu hết trong số họ là trong đá quý tùy chỉnh của chúng tôi. Kết xuất một phần với trình trợ giúp ngăn ứng dụng biết cách thông tin được hiển thị và chúng ta có thể dễ dàng mở rộng logic, thay đổi từng phần hoặc làm bất cứ điều gì chúng ta muốn bên trong trình trợ giúp này miễn là nó hiển thị một phần của khung nhìn. Đôi khi những phần này yêu cầu một số dữ liệu nằm bên trong chính gem đó và không cần phải đưa nó vào ứng dụng. Vì vậy, ứng dụng gọi phương thức trợ giúp (đôi khi không có bất kỳ tham số nào cả) tạo thành các tham số bắt buộc và người dân địa phương và chuyển chúng một phần.

Nhưng khi bạn chỉ hiển thị một phần bên trong ứng dụng của mình và bạn không cần bất kỳ logic mở rộng nào xung quanh việc hiển thị đó, tôi không nghĩ rằng có nhiều việc sử dụng trợ giúp mới cho từng phần.

6

Mặc dù thông thường bạn không nên sử dụng các phương pháp trợ giúp để hiển thị partials, tôi có thể thấy trong một số trường hợp có thể cần thiết. Đối với những trường hợp này, bạn cần sử dụng các phương pháp concat:

def itemprepare 
    concat(render(:partial => 'items/itemlist_summary')) 
end 
+0

Chính xác những gì tôi đang tìm :) –

1

Giống như Ajedi32 nói, partials sử dụng thuộc về quan điểm nhưng đôi khi nó là hữu ích để sử dụng chúng trong những người giúp đỡ. Tôi hy vọng sẽ hữu ích khi hiển thị những gì tôi đã thực hiện trong đơn đăng ký của mình:

Tôi đã theo dõi bài viết xuất sắc Thinking of Rails Helper to help DRY our view. Tôi đang sử dụng Jquery Mobile với tiêu đề cố định, thanh điều hướng, bảng điều hướng và chân trang.

Trong mỗi trang Tôi cần phải bao gồm phần chân và bảng điều hướng, vì vậy thường nó đã có:

<div data-role="footer"> 
    <h4>Page Footer</h4> 
    </div><!-- /footer --> 
    <%= render "shared/nav_panel" %> 
</div><!-- /page --> 

vào cuối mỗi trang.

Sau đó, tôi refactored render phần vào helper ứng dụng và bây giờ nó là:

# app/helpers/application_helper.rb 
    def page_footer 
    footer = content_tag :div , :"data-role" => "footer" do 
     content_tag :h4, "Page Footer" 
    end 
    nav_panel = render(:partial => 'shared/nav_panel') 
    footer + nav_panel 
    end 

và trong giao diện tôi chỉ cần gọi:

<%= page_footer %> 

Đây chỉ là một ví dụ ngắn; trong thực tế, ứng dụng có chân trang thay đổi theo trạng thái đăng nhập, ngôn ngữ người dùng, v.v.

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