0

我正在尝试在 Rails 应用程序的默认 application.rhtml 中显示 javascript 反馈小部件。它只会出现在页面子集上,分布在不同的控制器上。

试图找出最好的方法来做到这一点。

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

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

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

有什么想法吗?

4

1 回答 1

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? %>
于 2009-04-28T20:19:11.893 回答