我可以从布局文件重定向到控制器吗?要么?

时间:2011-01-31 20:40:55

标签: ruby-on-rails

目前我的一个布局视图中有代码。

<%- pending_items = items.pending.count
if pending_reviews > 0 -%>
    <div id="notice">
        <%= link_to("YOU HAVE #{pluralize(user_pending_items, 'PENDING ITEMS')}", user_item_path) %>
    </div>
<%- end -%>

我需要使用更多条件扩展代码,然后如果满足某个条件,则重定向到另一个操作。以下是几个问题:

  1. 如果遇到某种情况,我可以从布局文件重定向回控制器吗?我还没有发现任何有用的东西。
  2. 另外,在控制器中运行所有这些条件会更有意义吗?我尝试将它放在我的home_controller中,但布局没有拿起值。
  3. 谢谢。

2 个答案:

答案 0 :(得分:1)

看起来应该移动到控制器的代码。如果对每个页面执行此操作,则可以将其移至应用程序控制器,转换为前置过滤器(about filters)。请记住,如果您希望在视图中使用它们,控制器应该设置实例变量(开头为@的变量)。

答案 1 :(得分:1)

我建议将逻辑放在控制器或模型中。您必须使用实例变量将值传递给布局:

# in your controlller
@pending_items = Item.pending.count
if @pending_items > 0
  ...
  redirect_to ...
else
  ...
  redirect_to ...
end

可以在布局中访问@pending_items实例变量。