避免在视图中重复"content_for"

Fel*_*sen 2 ruby-on-rails actionview actioncontroller

我的布局中有一个子菜单,它与控制器不同,但不是每个控制器方法视图之间.我目前正在做的是以下内容:

<% content_for( :submenu ) do %>
    <%= render :partial => 'submenus/correct_submenu' %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

在方法的每个视图中

我的应用程序布局就是这个

<%= yield :submenu %>
Run Code Online (Sandbox Code Playgroud)

然而,这对于每个视图都是重复的.有没有办法在每个控制器上执行此操作?

jon*_*nii 9

我的建议是有一个约定,所以如果你有一个ProductsController子菜单submenus/products_menu.这样你就可以写一个看起来像这样的帮手:

def render_submenu
  content_for(:submenu) { render :partial => "submenus/#{controller.controller_name}_menu" }
end
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

<%= render_submenu %>
Run Code Online (Sandbox Code Playgroud)

然后,您可以将其设置为子菜单的默认content_,并且只有在需要不同时才指定内容.

我希望这有帮助!