Devo usare il nuovo metodo / azione per recuperare i record? (Rails)

3

Ho un controller di amministrazione che viene appena utilizzato per la sua azione index che esegue il rendering di una vista con gli aggiornamenti più recenti su determinate risorse:

class AdminController < ApplicationController

    before_action :authenticate_user!
    layout "admin"

    def index
        @events = Event.last(3)
        @foos   = Foo.last(3)
        @bars   = Bar.last(3)
    end

end

Ora, voglio creare un nuovo evento. Quindi ho un controller per gli eventi:

class EventsController < ApplicationController

  before_action :authenticate_user!, only: [:new,:create]
  layout "admin", only: [:new]


  def index
    @events = Event.all
  end

  def show
  end

  def new
  end

  def create
  end



end

Ma voglio visualizzare un elenco di eventi che sono stati precedentemente aggiunti nella stessa vista del modulo per la creazione di un nuovo evento. Dovrei recuperare tutto gli eventi nella nuova azione? cioè.

def new
  @events = Event.all
end

O c'è un approccio migliore (forse più riposante)?

    
posta Sheldon 29.12.2013 - 18:45
fonte

1 risposta

1

Secondo me, dovresti recuperare gli eventi all'interno della "nuova" azione.

L'alternativa più RESTful sarebbe quella di avere metodi separati (uno per creare un nuovo evento e uno per ottenere una lista di eventi aggiunti in precedenza) e poi richiamarli dal client per rendere alla fine la pagina / accettare input dell'utente.

Ma non mi piace questo approccio perché aumenta il tempo di caricamento totale sul client. Se non si stanno creando servizi REST, ma le pagine Web, in genere è meglio dimenticare di aderire strettamente al back-end con REST; ma cose come avere URL RESTful sono una buona cosa perché influiscono sull'esperienza utente.

Se davvero hai ancora bisogno di REST, puoi considerare di avere versioni separate che chiamano gli stessi metodi. Un metodo di azione per massimizzare il tempo di caricamento della pagina e, comunque, molti metodi REST necessari per separare le risorse REST.

    
risposta data 29.12.2013 - 21:37
fonte

Leggi altre domande sui tag