Tôi có một phần, _flash.html.haml
Tin nhắn của Flash trong Partials (Rails 3)
- flash.each do |type, value|
.flash{ :class => type.to_s }
= value
Mà tôi đang render từ một cái nhìn sử dụng
=render :partial => "flash"
nào phàn nàn rằng băm flash là nil/undefined. Tuy nhiên, khi tôi làm điều này:
=render :partial => "flash", :locals => {:flash => flash}
Nó hoạt động.
Tại sao phần không có quyền truy cập vào thông báo flash?
Nhưng 'flash' không phải là biến mẫu trong chế độ xem gốc, đó là phương thức trên' ActionView :: Base', cơ bản giống với phương thức trợ giúp. Vì vậy, tại sao không 'flash' trong một phần cuộc gọi cùng một phương pháp? – John
Đó là vì không gian tên bóng. Một phần được đặt tên là flash, do đó nó đặt tên biến flash trong một phần để ủy nhiệm cho flash ivar trong mẫu cha, bất kể flash có tồn tại hay không. Khi @tothemario trả lời, đặt tên nó là cái gì đó khác sẽ chặn không gian tên. – Cluster
@Cluster, tôi nghĩ rằng bạn chỉ cần thổi tâm trí của tôi. Đôi khi tôi tự hỏi nếu Rails "majic" không phải là một chút quá huyền diệu cho riêng của nó tốt. – guiniveretoo