2008-11-07 48 views

Respuesta

37

Se podría hacer algo como lo siguiente usando render:

respond_to do |format| 
    format.html { render :template => "weblog/show" } 
end 
14

Ver el Rendering section of the ActionController::Base documentation para las diferentes maneras en que puede controlar qué mostrar.

Se puede decir que los carriles para hacer una vista específica (plantilla) de esta manera:

# Renders the template located in [TEMPLATE_ROOT]/weblog/show.r(html|xml) (in Rails, app/views/weblog/show.erb) 
    render :template => "weblog/show" 

# Renders the template with a local variable 
    render :template => "weblog/show", :locals => {:customer => Customer.new} 
5

También puede pasar: acción, o: controlador si eso es más conveniente.

respond_to do |format| 
    format.html { render :action => 'show' } 
end 
2

Puede modificar el lookup_context interna del controlador al hacer esto en su controlador

before_filter do 
    lookup_context.prefixes << 'view_prefix' 
end 

y el controlador intentará cargar view/view_prefix/show.html al responder a una solicitud show después de buscar todos los demás prefijos de vista en la lista. La lista predeterminada suele ser application y el nombre del controlador actual.

class MagicController 
    before_filter do 
    lookup_context.prefixes << 'secondary' 
    end 

    def show 
    # ... 
    end 
end 

app.get '/magic/1` 

Esta solicitud GET buscará una vista en el siguiente orden:

  • view/application/show.erb
  • view/magic/show.erb
  • view/secondary/show.erb

y utilizar la primera vista encontrados.

Cuestiones relacionadas