Scriptaculous inplace editor

Ciao a tutti,
stavo giocando un po con scriptaculous e mi sono trovato davanti ad un
piccolo problema con inplace editor.
Nella view ho una parte di questo tipo:

<%= @user.name %>

route:
map.connect “current”, :controller=>“users”, :action=>“update”

e controller (sto utilizzando authlogic) :

def update
@user = current_user
if @user.update_attributes(params[:user])

  flash[:notice] = "Profile successfully updated."
  redirect_to root_url
else
  render :action => 'edit'
end

end

editano e salvando quindi il campo name ottengo un problema di token
invalido:

Processing UsersController#current (for 127.0.0.1 at 2009-08-25
21:23:05) [POST]
Parameters: {“id”=>“current”, “value”=>“asd”, “editorId”=>“name”}

ActionController::InvalidAuthenticityToken
(ActionController::InvalidAuthenticityToken):

Rendered rescues/_trace (69.6ms)
Rendered rescues/_request_and_response (0.4ms)
Rendering rescues/layout (unprocessable_entity)

so già che il problema è nel controller o meglio sto sbagliando a
passare i parametri al controller ma non riesco a capire come risolvere.
ps: current contiene l’id dell’attuale user:

Processing UsersController#edit (for 127.0.0.1 at 2009-08-25 21:22:57)
[GET]
Parameters: {“id”=>“current”}
User Load (0.8ms) SELECT * FROM “users” WHERE (“users”.“id” = ‘2’)
LIMIT

Sono agli inizi con rails quindi abbiate pazienza :wink:

Dawid

Processing UsersController#current (for 127.0.0.1 at 2009-08-25
21:23:05) [POST]
Parameters: {“id”=>“current”, “value”=>“asd”, “editorId”=>“name”}

ActionController::InvalidAuthenticityToken
(ActionController::InvalidAuthenticityToken):

Dovresti passare al server il parametro authenticity_token che di
solito viene messo automaticamente nei form con form_tag e form_for.
Se guardi le opzioni di InPlaceEditor hai l’opzione callback, che puoi
specificare per modificare i parametri da inviare.


Andrea F.

Grazie della risposta, in modo temporaneo nel controller ho inserito:
protect_from_forgery :only => [:new]
in modo da evitare che venga richiesto il token chiamando update, a quel
punto l’operazione viene eseguita ma il campo name non cambia valore:

Processing UsersController#update (for 127.0.0.1 at 2009-08-26 00:50:13)
[POST]
Parameters: {“current”=>“current”, “value”=>“asd”, “editorId”=>“name”}

Any idea?

Riguardo a callback invece come posso generare un token?

Grazie

Dawid

Il 25/08/2009 22:14, Andrea F. ha scritto:

2009/8/26 Dawid P. [email protected]:

Grazie della risposta, in modo temporaneo nel controller ho inserito:
protect_from_forgery :only => [:new]
in modo da evitare che venga richiesto il token chiamando update, a quel
punto l’operazione viene eseguita ma il campo name non cambia valore:

Processing UsersController#update (for 127.0.0.1 at 2009-08-26 00:50:13)
[POST]
Parameters: {“current”=>“current”, “value”=>“asd”, “editorId”=>“name”}

Any idea?

Non viene salvato il valore o non cambia il valore del campo lato
client?

Riguardo a callback invece come posso generare un token?

Puoi usare il metodo form_authenticity_token.

solito viene messo automaticamente nei form con form_tag e form_for.
Se guardi le opzioni di InPlaceEditor hai l’opzione callback, che puoi
specificare per modificare i parametri da inviare.


Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


Andrea F.

Puoi disabilitare in modo permanente il passaggio del token per le XHR,
in
Rails 3 sarà disabilatato di default per questo tipo di requests.

Luca

Non viene salvato il valore, credo che value=>" " non viene gestito in
modo corretto dal controller dato che la tabella user non ha un record
“value” (che in questo caso dovrebbe corrispondere al campo “name”).

Sto seguendo il ragionamento giusto?

Dawid

Il 26/08/2009 11:12, Andrea F. ha scritto:

2009/8/26 Dawid P. [email protected]:

Non viene salvato il valore, credo che value=>" " non viene gestito in
modo corretto dal controller dato che la tabella user non ha un record
“value” (che in questo caso dovrebbe corrispondere al campo “name”).

Sto seguendo il ragionamento giusto?

Di solito si crea un’azione apposta x fare l’update di quell’attributo
usando il parametro value come nuovo valore.
Se invece vuoi utilizzare l’azione update puoi fare qlcosa del genere:

<%= name %>


Andrea F.

http://svel.to/2

Grazie sta sera provo :wink:

Dawid

Il 26/08/2009 23:34, Andrea F. ha scritto:

Il 26/08/2009 23:34, Andrea F. ha scritto:

Se invece vuoi utilizzare l’azione update puoi fare qlcosa del genere:
});

Funziona tutto perfettamente riguardo al salvataggio del valore,
relativamente al token anche, nel mio layout ho inserito:
<%= javascript_tag “window._token = ‘#{form_authenticity_token}’” %>

e quindi nella view:
callback: function(form, value) {
return {“user[name]”: value, “authenticity_token”: window._token
};

stranamente se nella view provavo direttamente con:
“authenticity_token”: form_authenticity_token

non funzionava.

Thx per l’aiuto.

Dawid