attachment_fu und mehrteiliger form_for
-
20-09-2019 - |
Frage
Woo. Meine erste Frage.
Ich habe ein Gefühl, das ich etwas ziemlich einfach in der Konstruktion von meiner Form mit Blick auf bin. Ich verwende attachment_fu und kann dieses Formular nicht bekommen nichts außer den Dateidaten zu übergeben. Ein Benutzer has_many Profile und ein Profil has_many Dokumente.
Meine Form sieht wie folgt aus:
<%= 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 -%>
Und hier ist der 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
Die Protokolle zeigen alle die Bilddaten geschrieben zu werden, aber ich kann die Beschreibung nicht passieren oder, was noch wichtiger ist, die profile_id, die der Fremdschlüssel in meinem Dokumentenmodell ist. Ich war auf die ganze Nacht stecken und denken nicht an diesem Morgen von etwas frisch. Jede Hilfe wäre toll.
Lösung
Für die profile_id
müssen Sie so etwas wie:
<%= f.hidden_field :profile_id %>
Welche in Ihrem Controller, den Sie bei Verwendung params[:document][:profile_id]
bekommen, wenn nötig.
Obwohl von dem Versuch zu erraten, was Ihr Code tun ist, ich, dass params[:profile_id]
vermuten schon aus welcher Route festgelegt ist Sie zu diesem Controller bekam.
Ich bin nicht sicher, warum Sie sehen, nichts für die Beschreibung. Es sollte in Ihren Controller wie params[:document][:description]
kommen werden.