with rails how from ruby-on-rails-3 render partial content-for

ruby on rails 3 - rails - Cómo hacer parcial en todo excepto una determinada acción.



render js rails (3)

Tengo un _header.html.erb parcial que es donde coloco mi barra de navegación

en mi página de inicio no quiero mostrar la barra de navegación.

este es el body de application.html.erb

<body> <%= render ''layouts/header'' %> <div id="container"> <%= yield %> </div> </body>

¿Cómo lo represento en cada acción, excepto en acciones específicas en controladores específicos?


Puede poner esa lógica en sus hojas de estilo, en su controlador o en sus vistas (esta última, solo para controladores completos).

Hojas de estilo

Si desea agregar la lógica en sus hojas de estilo, primero agregue a su etiqueta de cuerpo las siguientes clases:

<body class="<%= "#{controller.controller_name} #{controller.action_name}" %>">

Luego, en tu css, agrega algo como esto:

body.controller.action .navbar { display: none; }

Controlador

Para agregar esta lógica a su controlador, agregue un filtro anterior a su controlador de aplicación:

class ApplicationController < ActionController::Base before_filter :show_navbar protected def show_navbar @show_navbar = true end end

Luego, si no desea mostrar la barra de navegación en CarsController, haga lo siguiente:

class CarsController < ApplicationController skip_before_filter :show_navbar, only: [list, of, actions] end

donde [list, of, actions] son las acciones en las que no desea mostrar la barra de navegación.

Finalmente, cambie su diseño para verse así:

<% if @show_navbar -%> <%= render ''layouts/header'' %> <% end -%

Puntos de vista

Si desea deshabilitar el encabezado para los controladores completos, primero mueva el encabezado a app/views/application/ y cambie su render a:

<%= render partial: ''header'' %>

Finalmente, en esos controladores sin barra de navegación, agregue un _header.html.erb vacío a app/views/controller_name .

Para que esta opción funcione, necesitas al menos Rails 3.1


Reemplace su render con esto:

<%= render ''layouts/header'' unless @disable_nav %>

Luego, simplemente puede establecer disable_nav en verdadero en cualquier acción del controlador que desee:

def landing_page @disable_nav = true end

Como un before_filter , que yo before_filter por encima de lo anterior:

application_controller.rb

def disable_nav @disable_nav = true end

my_controller

before_filter :disable_nav, only: [:landing_page]


Yo establecería un diseño diferente para esas acciones específicas en controladores específicos.