Buenas a todos de nuevo.
Tengo un “pequeño” problema. Estoy migrando una aplicacion de Rails
1.2.x a 2.x.
Os pongo en situacion para ver si me podeis ayudar. Tengo el plugin de
restful_authentication, al que le he añadido un par de acciones, edit y
updated (en 1.2.x funcionaban) que no funcionan actualmente. Os pongo
codigo:
form de view edit.html.erb
<% form_for :user,
:url => { :action => ‘update’ },
:html => { :method => :put } do |f| %>
.
.
.
acciones del controlador users_controller.rb
Actualización del perfil
def edit
@user = current_user
end
def update
@user = User.find(current_user.id)
if @user.update_attributes(params[:user])
flash[:notice] = “Information updated”
redirect_to :action => ‘edit’
else
render :action => ‘edit’
end
end
Fin actualización del perfil
Llega hasta el redirect y me muestra el mensaje de que se actualizado la
informacion pero no se actualiza nada. Mirando el log veo que le llega
corractamente el hash “user” con los datos que he introducido en el
formulario, pero despues en la sentencia UPDATE veo que no rellena
ninguno de los campos que he introducido en el formulario.
No se me ocurre de que puede ser, he mirado en la api de rails la
funcion update_attributes por si ha cambiado de la v1.2 a la v2 en algo
pero nada. He comprobado que los campos de la base de datos coinciden
con los del formulario y nada.
Si alguien me puede lanzar algo de luz lo agradeceria.
Saludos.
On 20/02/2008, Valentín Palacios [email protected] wrote:
Buenas a todos de nuevo.
Tengo un “pequeño” problema. Estoy migrando una aplicacion de Rails
form de view edit.html.erb
<% form_for :user,
:url => { :action => ‘update’ },
:html => { :method => :put } do |f| %>
.
Estás pasando al html el método “put”. Esto no lo soporta
ningúnnavegador, así que Rails lo simula creando un campo oculto llamado
“_method”, pero para que pase esto, debes específicar el method =>
‘put’ en el primer hash, el de opciones, junto con el hash de url.
Y cambia de paso la url a user_path(@user) (1). Al hacer el put (que
en realidad es un post) contra /user te digirá automáticamente al
método update
(1) O la variable en la que tengas al usuario
Manuel, que
piensa que eres una excelente persona y medra en torno a
http://simplelogica.net y/o http://simplelogica.net/logicola/
Recuerda comer mucha fruta y verdura.
El campo “_method” que me indicas lo pasa correctamente con la opcion
put como bien indicas (tal como lo tenia). Si pongo la opcion “:method”
dentro del primer hash me genera una url con parametors[1], que creo que
no es correcta para el caso jeje. De la manera que yo lo tenia pasaba el
campo oculto que le indica que tiene que hacer un update.
Actualmente esta de la siguiente manera:
<% form_for :user,
:url => user _path(@user),
:html => { :method => :put } do |f| %>
De esta forma me envia en los parametros tanto el mencionado “_method”
como “id”, “controller”, “action”, etc…
No se me ocurre que puede suceder. Este es hash, por si ayuda de algo:
Parameters: {“user”=>{“name”=>“Nombre”, “text”=>“valen”,
“password_confirmation”=>“”, “password”=>“”, “last_name”=>“Apelldios”,
“address”=>“Direccion”, “email”=>“[email protected]”}, “commit”=>“Save
Changes”,
“authenticity_token”=>“0dc66766eb49501c01b6f1b40d8b88419e45a840”,
“_method”=>“put”, “action”=>“update”, “id”=>“1”, “controller”=>“users”}
[1] http://localhost:3000/users/1?method=put
Saludos.
Manuel González Noriega escribió:
Manuel, vaya tonterÃa que era. TenÃa que poner en el modelo los campos
en attr_accessible para que se puedan editar…
Saludos.
Manuel González Noriega escribió:
On 20/02/2008, Valentín Palacios [email protected] wrote:
Manuel, vaya tontería que era. Tenía que poner en el modelo los campos
en attr_accessible para que se puedan editar…
Me alegro que lo hayas podido solucionar, Valentín. Siento mi tremendo
brainfuck con las opciones de form_for 
No te preocupes. Si no tuviéramos errores esto serÃa un coñazo jajaja.
FÃjate el mÃo lo tonto que era… y me lleve parte de anoche, parte de
la mañana (mientras tomaba un tentempié ehhh!!!) en el trabajo y parte
de la tarde… Ya tengo todo lo que tenÃa hecho en la v1.2 en la v2.
Saludos.
Manuel González Noriega escribió: