2016-01-14 9 views
10

Sto provando a creare un modulo che ha solo un campo di testo e un campo nascosto che userò quando trasmetterò i dati a un'API HTTP, quindi non ho un modello associato ad esso, e per estensione, nessun changeset.utilizzando form_for senza un modello o un changeset

È possibile farlo e utilizzare form_for o è la risposta per scrivere semplicemente HTML per creare il modulo?

+0

Ciao, Spike! Sono inciampato su questo solo ficcanaso intorno alle domande di Phoenix. –

risposta

19

È possibile utilizzare form_for/4 passando un Plug.Conn come primo argomento.

Da the docs (in particolare la sezione "Con dati di connessione"):

form_for/4 aspetta come primo parametro qualsiasi struttura di dati che implementa il protocollo Phoenix.HTML.FormData. By default, Phoenix implements this protocol for Plug.Conn, che ci consente di creare moduli basati solo sulle informazioni di connessione.

Questo è utile quando si creano moduli non supportati da alcun tipo di dati del modello, come un modulo di ricerca.

<%= form_for @conn, search_path(@conn, :new), [as: :search], fn f -> %> 
    <%= text_input f, :for %> 
    <%= submit "Search" %> 
<% end %> 
+0

Grazie! Ho sfogliato quella pagina stamattina, ma non ho notato quella sezione. Questo e spettacolare. –

+3

La parola chiave 'name' è deprecata e la nuova parola chiave è' as' in 'form_for'. –

Problemi correlati