attachment_fu e form_for multipart
-
20-09-2019 - |
Domanda
Woo. La mia prima domanda.
Ho la sensazione che sto affaccia qualcosa di piuttosto semplice nella costruzione della mia forma. Sto usando attachment_fu e non può ottenere questo modulo per passare nulla oltre ai dati del file. A profili utente has_many e un documenti profilo has_many.
La mia forma è simile al seguente:
<%= error_messages_for :document %>
<% form_for([@user, @profile, @document], :html => {:multipart => true }) do |f| -%>
<p>
<label for="document">Upload A document:</label>
<%= f.file_field :uploaded_data %>
</p>
<%= f.label :description%>
<%= f.text_field :description%>
<p>
<%= submit_tag 'Upload' %>
</p>
<% end -%>
Ed ecco il controller:
before_filter :require_user, :get_profile
def new
@document = @profile.documents.build
end
def create
@document = @profile.documents.build(params[:document])
if @document.save
flash[:notice] = 'Your document was successfully created.'
redirect_to document_url(@document)
else
render :action => :new
end
end
private
def get_profile
@user = current_user
@profile = @user.profiles.find(params[:profile_id])
end
I registri mostrano tutti i dati di immagine sempre inviato, ma non posso passare la descrizione o, ancora più importante, la profile_id, che è la chiave esterna nel mio modello di documento. Sono rimasto bloccato su questo tutta la notte, e non riesco a pensare a qualcosa di fresco questa mattina. Qualsiasi aiuto sarebbe grande.
Soluzione
Per la profile_id
avrete bisogno di qualcosa di simile a:
<%= f.hidden_field :profile_id %>
Il che nel controller otterrete ad utilizzare params[:document][:profile_id]
se necessario.
Anche se a cercare di indovinare ciò che il codice sta facendo, ho il sospetto che params[:profile_id]
è già impostato da qualunque percorso si avuto modo di questo controller.
Non sono sicuro perché non si è visto nulla per la descrizione. Dovrebbe essere venuta nel vostro controller come params[:document][:description]
.