【发布时间】:2016-03-15 19:33:54
【问题描述】:
我有这个:
<%= f.association :gestor, selected: current_usuario.gestor_id, label_method: :descricao, value: current_usuario.gestor_id, disabled: true %>
我的控制器:
def create
@usuario = Usuario.new(usuario_params)
respond_to do |format|
if @usuario.save
format.html { redirect_to controle_usuarios_path, notice: 'Usuario was successfully updated.' }
format.json { render :index, status: :ok, location: @usuario }
else
format.html { render :new }
end
end
end
(...)
def usuario_params
params.require(:usuario).permit(:cpf, :usuario_pai, :gestor_id, :email, :password, :password_confirmation, :agente_id, :perfil_id)
end
和控制台:
Processing by ControleUsuariosController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"xnMQOvRLO3cCrq/l5KSSG0qB3Pc8S4wtSgs4PTCTkaJ5kLLwMD73s/4TeBWYYbvmBKzvBca4T0eMT9F9UQo/Ew==", "usuario"=>{"usuario_pai"=>"admin@mail.com", "agente_id"=>"2", "cpf"=>"111.111.111-11", "email"=>"xxx@xxx.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "perfil_id"=>"2"}, "commit"=>"Criar Usuario"}
参数 gestor_id 没有出现,为什么?错误是这样的:
Usuario(#70271925151780) 预期,得到字符串(#3432540)
【问题讨论】:
-
我猜你在参数中没有得到
gestor_id,仅仅是因为选择框被设置为禁用(disabled => true选项)。禁用的表单标签不会在表单提交时传递值。还是您稍后使用 Javascript 启用它? -
哇,我删除了 disabled: true,并提交了参数 gestor_id,但我得到了同样的错误: Usuario(#48266120) expected, got String(#6291560) =/
-
所以我猜这是两个不相关的错误(缺少属性和您描述的错误)。缺少的属性已经解决(通过再次启用选择),但要更正另一个错误,我们需要您将我们指向代码中确切发生错误的行。
-
错误就在 def create @usuario = Usuario.new(usuario_params)
-
你能从错误堆栈跟踪中再发布几行吗?
标签: ruby-on-rails ruby-on-rails-4 associations