2016-06-14 13 views
6

Có sự khác biệt về chức năng nào khi viết return render 'edit'render 'edit' and return không? Cả hai cú pháp đều an toàn để sử dụng?"trả về kết xuất" so với "hiển thị ... và trả về" trong Rails

Cú pháp return render ngắn gọn hơn một chút, nhưng render and return được ủng hộ chính thức tại đây Avoiding Double Render Errors.

return render sẽ trả về giá trị bất kỳ mà phương thức hiển thị trả về và render and return sẽ trả về một nil từ phương pháp bộ điều khiển.

+0

An điều khó khăn khác là sử dụng 'render và return', không làm' render && return', mặc dù Rubocop của bạn có thể không ưa thích nó. – LYu

Trả lời

8

Bạn đã trả lời câu hỏi của bạn ở cuối:

trở lại làm sẽ trả lại bất cứ giá trị render phương thức hoàn trả và render và trở lại sẽ trả về một con số không từ phương pháp điều khiển

Điều quan trọng là bạn đang trả về - điều này ngăn không cho bất kỳ mã nào khác trong hoạt động của bộ điều khiển hoạt động - do đó bảo vệ bạn khỏi lỗi hiển thị kép. Tôi không tin bất cứ điều gì thực sự lắng nghe giá trị trả về của các hành động điều khiển.

Nếu tôi phải đoán tại sao phương pháp ưa thích là and return Tôi sẽ nói rằng nó đọc giống như văn xuôi, đó là cách ruby. Đó là để nói, nó có vẻ giống như một câu "Render category và return" thay vì "return render categories"

2

Tất cả các phương thức trong Ruby trả về một kết quả liên quan trên dòng của phương thức cuối cùng. Nếu bạn muốn trả lại kết quả mà không cần chờ toàn bộ phương pháp, bạn có thể quay trở lại giá trị với từ khóa return

Ví dụ:

def hello1 
    'I m first' # executes 
    'I m second' # result 
end 

def hello2 
    return 'I m first' # result 
    'I m second' # this line will be never executeed 
end 

puts hello1 
# => 'I m second' 
puts hellow 
# => 'I'm first' 

Và phương pháp render hoạt động theo cùng một cách

Nhưng render phương pháp được viết giống như quy trình (kết quả là, nhưng kết quả là true), do đó bạn chỉ có thể return sau render gọi

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