我正在用 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
就像remote: true
不存在
当一切正常时,URL 是 localhost:3000 并且永远不会更改,但是当我选择要上传的图像时,之后的 URLcrete
变为 localhost:3000/empleados
有人对此有任何线索吗?在过去的 3 天里,我一直在尝试解决这个问题,但失败了。
提前谢谢。