![](/img/trans.png)
[英]Unable to load controller-specific javascript file in Rails (5+)
[英]Rails: Controller-specific menu in layout
如何在 Rails 的一般应用程序布局中添加特定于控制器的菜单(或 div)?
如果我正确理解了您需要在布局中特殊放置的问题。
在布局中所需的 position 中使用 <%= yield(:) %>,例如:
# application.html.erb
<%= yield(:right_menu) %>
# show.html.erb
<% content_for :right_menu do %>
<!-- Everything in this block will be shown at the position yield(:right_menu) in layout -->
<% end %>
在http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method-i-content_for中查看更多信息
方法1:在controller中设置一个变量
class SomeController
before_filter :set_to_use_menu
private
def set_to_use_menu
@use_menu = true
end
end
方法二:在布局中确定控制器的名字
<%- if controller_name == "your_controller_name" %>
<%= render :partial => "the_menu" %>
<%- end %>
除了 content_for 方法(可能是也可能不是您想要的),还有一些其他选项。
您可以在 controller 中使用 before_filter 来设置变量:
# Controller
class TestController < ApplicationController
before_filter :set_variable
def set_variable
@my_variable = true
end
end
# Layout
if @my_variable
# Do the controller-specific stuff you want to do
end
或者,您可以单独留下 controller,只检查布局中的 controller 名称:
# Layout
if controller.controller_name == 'test'
# Do the controller-specific stuff you want to do
end
只需在布局中调用适当命名的部分
<%= render :partial => "#{controller_name}_menu" %>
如果您的 controller 是WidgetsController
,那么这将使用_widgets_menu.html.erb
下的部分./app/views/layouts
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.