【发布时间】:2012-10-18 12:53:49
【问题描述】:
我正在使用 rails 3.2.8 编写一个 100% ajax 应用程序
一切都很顺利,直到我尝试将员工的照片上传到员工管理模块。
这是我的代码的一部分:
在控制器处:
class EmpleadosController < ApplicationController
respond_to :js
before_filter :require_user
def index
@empleados = Empleado.paginate( page: params[ :page ],
joins: [:user,:contacto],
select: 'empleados.id as id, empleados.user_id, empleados.contratado_el, empleados.despedido_el, empleados.nss, empleados.sueldo_base_semanal, empleados.comentarios, empleados.foto_file_name, empleados.foto_content_type, empleados.foto_file_size, empleados.foto_updated_at, users.username as username, contactos.salutacion_id as salutacion_id, contactos.id as contacto_id, contactos.nombres as nombres, contactos.apellidos as apellidos'
).sorted( params[ :sort ] )
end
def new
@empleado = Empleado.new
end
def create
@empleado = Empleado.new(params[:empleado])
@empleado.sueldo_base_semanal = params[:empleado][:sueldo_base_semanal].gsub(',','').gsub('$','').to_f
if @empleado.save
redirect_to empleados_path
else
render action: 'new'
end
end
...
现在来看视图(我正在使用 HAML):
= form_for( @empleado, remote: true, html: {multipart: true} ) do |f|
= show_me_the_errors @empleado
%table.captura
%tr
%td.etiqueta
= f.label :user_id
%td.campo
= f.select :user_id,
User.usuarios_no_asignados,
{ include_blank: true },
{ tabindex: 1 }
= image_tag 'nuevo_24.png',
style: 'vertical-align: bottom;',
id: 'empleado_nuevo_usuario'
... ( 5 more text fields ) ...
%tr
%td.etiqueta
= f.label :foto
%td.campo
= f.file_field :foto,
accept: 'image/png,image/gif,image/jpeg'
问题是,虽然没有选择要上传的文件,但一切正常,respond_to :js 命令在create 与index 和new 之间的所有交互中都应正常工作。
但是,当您选择图像时,create 与 index 和 new 之后的所有交互都变为 HTML,完全忽略 respond_to :js,我的意思是,form for 的行为就像 @ 987654333@ 不在
当一切正常时,URL 是 localhost:3000 并且永远不会改变,但是当我选择要上传的图像时,crete 之后的 URL 变为 localhost:3000/empleados
有人对此有任何线索吗?在过去的 3 天里,我一直在尝试解决这个问题,但失败了。
提前谢谢。
【问题讨论】: