可以渲染部分观察局部变量吗?

时间:2012-02-14 03:19:22

标签: ruby-on-rails ruby-on-rails-3

我有一个共享模板,我经常使用它来显示错误:

 <%= render "shared/flash_error", :error => flash[:error], :info => flash[:info] %>

这个变量是可选的,所以我的观点是:

<% if defined?(error) and error %>
    <div class="error">
        <%= error %>
    </div>
<% end %>

<% if defined?(info) and info %>
    <div class="info">
        <%= info %>
    </div>
<% end %>

现在,有些情况下我需要添加一个新的可选变量并使用其他类型的错误扩展partial。然而,这可能使渲染难以跟上。我现在需要编辑每个渲染并将其更改为:

<%= render "shared/flash_error", :error => flash[:error], :info => flash[:info], :new_entry => flash[:new_entry] %>
每个新条目

等等。所以,我想知道,有没有办法让渲染的部分'观察'特定的闪存变量,所以我甚至不必将它们作为属性传递给渲染视图?

1 个答案:

答案 0 :(得分:0)

Yeap,尝试过并且工作正常。类似的东西:

<%= render "shared/flash_error", msg_notifications %>

其中msg_notifications只是一个填充了所有内容的哈希,因此可以以干燥的方式进行更改。很简单,但有时心灵会玩坏游戏:P