Come mostrare il contenuto del form appena inserito nell'opzione “:confirm =>” su Ruby on Rails

StackOverflow https://stackoverflow.com/questions/1879344

  •  18-09-2019
  •  | 
  •  

Domanda

Sto cercando di avere un modo per confermare le informazioni inserite prima di salvarle effettivamente nel DB

Considera la possibilità di creare una pagina di conferma individuale come discusso qui

Rubino sui binari:Pagina di conferma per la creazione dell'oggetto ActiveRecord

Tuttavia il mio modulo include un file allegato che utilizza una graffetta, il che rende più complicata l'implementazione.

Ho pensato di avere un: confermare => pop -up che avrebbe mostrato le informazioni che l'utente aveva appena inserito.

Il problema è, ad esempio, come mostrare le informazioni che l'utente ha appena inserito

<% form_for @entry, :html => { :multipart => true } do |f| %>
  <%= f.error_messages %>


    <%= f.label :name %><br />
    <%= f.text_field :name %>

    <%= f.label :file %><br />
    <%= f.file_field :file %>

    <%= f.submit 'Create', :confirm => "????? " %>

<% end %>
È stato utile?

Soluzione

Dato che gli allegati di carico potrebbe non essere una cattiva idea di rendere una visione messa in scena tra cui le informazioni risultanti dalla attaccamento permettendo all'utente di confermare. Come nella visualizzazione del file se si tratta di un'immagine, o il primo paragrafo di testo se si tratta di un file di testo, ecc.

E 'intenzione di prendere più lavoro che il solo l'aggiunta di un pop-up di conferma, ma sento l'esperienza utente migliorata vale lo sforzo supplementare.

Non ho familiarità con il modo in cui funziona graffetta. Quindi sei per lo più da soli per i dettagli intimi.

Probabilmente si dovrà creare un record prima che la vista messa in scena può essere reso con il campione del file caricato. Per fare che mi piacerebbe impostare una colonna "attivo" del modello in questione, che il default è false.

Utilizzo sarebbe simile a questa:

  1. User complets nuova forma.
  2. L'attaccamento è aggiornato e le registrazioni vengono salvate, con il campo attivo impostato su false.
  3. Redirect alla pagina di conferma che è essenzialmente la pagina di spettacolo con un pulsante di collegamento di conferma / e di un annullamento link / pulsante
  4. a. Quando il pulsante / link di conferma viene cliccato viene inviata una richiesta al controller innescando l'azione di aggiornamento su questa impostazione attiva al vero record.

    b. Quando il collegamento annullare / fa clic sul pulsante invia una richiesta al controller trigering l'azione in questo disco distruggere.

Tutto ciò che rimane è quello di istituire un'attività ricorrente per rimuovere gli oggetti che sono inattivi e sono stati crated abbastanza a lungo fa, che è lecito ritenere che l'utente ha appena concluso la sessione del browser.

Altri suggerimenti

L'opzione di conferma per le rotaie presentare metodo può solo prendere un valore di testo.

Se si desidera generare dinamicamente il testo conferma, in un modo che si possa fare è quello di scrivere il proprio codice HTML presentare tag e scrivere JavaScript personalizzato per analizzare i campi che si desidera utilizzare nel testo generato.

In alternativa è possibile utilizzare i Rails metodo di invio, ma usare qualcosa come JQuery per aggiungere un gestore di eventi ad esso.

Lancerei semplicemente il mio js in un gestore onclick.Questo è tutto ciò che fa Rails.

<%= f.submit 'Create', :onclick => "confirm('Name is ' + $F('entry_name'));" %>

(nota, non l'ho testato, ma sembra vicino.confirm è una funzione js principale, non fa parte di alcuna libreria)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top