如何在应用程序布局中显示不同控制器和方法的内容?

时间:2009-04-28 20:10:49

标签: ruby-on-rails layout methods controller

我正在尝试在rails app中的默认application.rhtml中显示javascript反馈窗口小部件。它只会出现在分布在不同控制器上的页面子集中。

试图找出最佳方法。

一种想法是做这样的事情:

<%= render :partial => "layouts/feedback_tab"  if @show_feedback_tab == true %>

然后在每个控制器的每个方法中设置@show_feedback_tab。这看起来过于复杂。我的第二个想法是,我可以将@show_feedback_tab默认设置为true,并将其设置为false,以用于我不想显示它的相关单个方法。但是全局变量似乎不正确,并且application_controller中的方法将不起作用(我认为),因为显示依赖于被调用的方法。

有什么想法?

1 个答案:

答案 0 :(得分:1)

您可以在application_controller.rb中编写方法:

def show_feedback_tab?
  if params[:controller] == :user && params[:action] == :index
    return true
  end
  ...
  or put here any other logic
  ...
  false
end

并将其添加为辅助方法(在application_controller.rb中):

helper_method :show_feedback_tab?

然后您可以在以下视图中使用它:

<%= render :partial => "layouts/feedback_tab"  if show_feedback_tab? %>