application.html.erb
すべてのビュー テンプレートでそれを表示する html メニューを含めました。
お気に入りif path == HOME || "/page/1"
それで、
メニューを表示しないでください。
ありがとう
application.html.erb
すべてのビュー テンプレートでそれを表示する html メニューを含めました。
お気に入りif path == HOME || "/page/1"
それで、
メニューを表示しないでください。
ありがとう
たとえば、メニューを表示したくないアクションでインスタンス変数を作成します。@hide_menu
次に、ビューでそれをフィルタリングできます。
<% unless @hide_menu %>
...
<% end %>
これを行うための変数がたくさんある場合、コードのビット数が多い場合は、@config
たとえば次のようにハッシュを使用して、アプリケーションコントローラーで初期化できます。
before_filter :init_config
def init_config
@config = {...}
end
<% unless @config[:hide_menu] %>
...
<% end %>
request.fullpathを使用して現在のURLを確認できるため、たとえば、request.fullpath == HOMEを使用して、自宅にいるかどうかを確認できます。
最初にas-でメニュー コードを使用します。application_controller
before_filter
アプリケーション コントローラ:
before_filter :show_menus
def show_menus
# the menu stuff you want to show
end
before_filter
次に、実行されるべきではない、またはメニューを表示したくない任意のコントローラー内で以下を使用できます-
他のコントローラー:
skip_before_filter :show_menus
before_filter
任意のアクションを無視することもできます。例えば-
skip_before_filter :show_menus, :only => [:logout]
上記の行は、この行に言及したコントローラー (ここではその他のコントローラー)のログアウト アクションのメニューを表示しません。
注:この手順により、次のようなすべてのアクションの表示/非表示メニューのif else ステートメントが繰り返される見苦しさを回避できます。
if action_name
#show menu
else
#hide menu
end
何らかのロジックに基づいてメニューを非表示にする必要がある場合は、Intrepiddの回答を使用できます。
いくつかの場所でのみメニューを非表示にするか、メニューの代わりに何かを表示する必要がある場合は、使用できますcontent_for
/app/views/layouts/application.html.erb
<!DOCTYPE html>
<html>
<head>
<title>my title</title>
</head>
<body>
<%= content_for?(:menu) ? yield(:menu) : (render 'layouts/menu') %>
<%= yield %>
</body>
</html>
/app/views/layouts/_menu.html.erb
<%= link_to "Home", root_path %> | <%= link_to "Pages", pages_path %>
/app/views/pages/index.html.erb
<% content_for :menu do %>
this can be whatever you want, even a blank string
<% end %>
here the content for pages/index