attachment_fu et multipart form_for
-
20-09-2019 - |
Question
Woo. Ma première question.
Je sens que je suis sur quelque chose assez basique dans la construction de ma forme. J'utilise attachment_fu et ne peut pas obtenir ce formulaire pour transmettre quoi que ce soit en plus des données de fichiers. Un profil has_many utilisateur et un documents has_many profil.
Ma forme ressemble à ceci:
<%= 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 -%>
Et voici le contrôleur:
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
Les journaux indiquent toutes les données d'image s'affichés, mais je ne peux pas passer la description ou, plus important encore, le profile_id, qui est la clé étrangère dans mon modèle de document. J'étais coincé sur cette toute la nuit, et ne peut pas penser à quelque chose de nouveau ce matin. Toute aide serait grande.
La solution
Pour la profile_id
vous besoin de quelque chose comme:
<%= f.hidden_field :profile_id %>
Ce qui dans votre contrôleur, vous obtiendrez à l'aide params[:document][:profile_id]
si nécessaire.
Bien que d'essayer de deviner ce que votre code est en train de faire, je pense que params[:profile_id]
est déjà réglé de tout ce que la route vous à ce contrôleur.
Je ne sais pas pourquoi vous ne voyez rien pour la description. Il devrait arriver dans votre contrôleur comme params[:document][:description]
.