¿Cómo puedo prefijar enlaces en mis vistas de Rails en función de una condición?

Tengo algunas rutas existentes como:

/people/:id
/events/:id

y así sucesivamente, en mi routes.rb.

Ahora quiero proporcionar un estilo personalizado para mis clientes afiliados. Mi pensamiento actual es que mis rutas se verán así:

/people/:id
/events/:id
...

/affiliates/:id/people/:id
/affiliates/:id/events/:id
...

y así sucesivamente.

Sin embargo, quiero asegurarme de que los enlaces que genero en mis vistas siempre tendrán el prefijo /affiliates/:id si estoy en una página de afiliados. (No quiero tener que escribir un condicional "¿es esto un afiliado?" cada vez que uso un url_for or path_for ayudante.)

¿Cuál es la mejor forma de hacerlo?

preguntado el 22 de mayo de 12 a las 18:05

1 Respuestas

En mi opción, es mejor si maneja esa lógica dentro del controlador en lugar de en la vista.

Puedes tener algo de la siguiente manera:

class EventController < ApplicationController
  .
  .
  def show
    @event = Event.find(params[:id])
    if(current_user.is_affiliate?)
      #render the affiliate view
    else
      #renders regular view
    end
  end

En su opinión, simplemente puede tener

<%= link_to "Event", @event %>

Para que la vista no necesite administrar esa lógica y pueda mantenerla en el controlador.

contestado el 23 de mayo de 12 a las 00:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.