attachment_fu y form_for multiparte
-
20-09-2019 - |
Pregunta
Woo. Mi primera pregunta.
Tengo la sensación de que estoy pasando por alto algo bastante básico en la construcción de mi forma. Estoy usando attachment_fu y no puedo obtener este formulario a pasar nada, además de los datos del archivo. A has_many perfiles de usuario y un perfil has_many documentos.
Mi forma se parece a esto:
<%= 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 -%>
Y aquí está el controlador:
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
Los registros muestran todos los datos de imagen consiguiendo publicados, pero no pueden pasar a la descripción o, más importante aún, el profile_id, que es la clave externa en mi modelo de documento. Me he quedado atrapado en esto toda la noche, y no puedo pensar en nada fresco esta mañana. Cualquier ayuda sería grande.
Solución
Para el profile_id
necesitará algo como:
<%= f.hidden_field :profile_id %>
Lo que a su controlador obtendrá en el uso de params[:document][:profile_id]
si es necesario.
A pesar de tratar de adivinar lo que el código está haciendo, sospecho que params[:profile_id]
ya está establecido de cualquier ruta por la que llegó a este controlador.
No estoy seguro de por qué usted no está viendo nada por la descripción. Hay que entra en tu controlador como params[:document][:description]
.