2011-01-20 13 views
17

Desidero un collegamento per aggiornare una risorsa, senza utilizzare un modulo HTML.link_to update (senza modulo)

Rotte:

resources :users do 
resource :profile, :controller=>"profiles" 
resources :friends 
end  

rake routes:

user_friend GET /users/:user_id/friends/:id(.:format){:action=>"show", :controller=>"friends"} 
      PUT /users/:user_id/friends/:id(.:format){:action=>"update", :controller=>"friends"} 

voglio usare put per aggiornare un amico da un link semplice, qualcosa di simile:
< % = link_to "Aggiungi come amico", user_friend_path (current_user,: method => 'put')%>

Ma mentre Rails incontra quel collegamento cerca di entrare in azione.
La domanda è: qual è il giusto collegamento per farlo?

+0

Hai provato ad aggiungere un parametro di azione? <% = link_to "Aggiungi come amico", user_friend_path (current_user,: method => 'put,: action =>: update')%> E perché hai bisogno di mettere il metodo se non passi alcun parametro di aggiornamento? –

risposta

31
link_to "Add as friend", user_friend_path(current_user, @friend), :method=> :put 

inserirà un collegamento con 'data-metodo' attributo impostato su 'mettere', che a sua volta essere raccolto dalle rotaie javascript e trasformate in una forma dietro le quinte ... Direi che è ciò che vuoi.

Si dovrebbe considerare l'utilizzo di: post, dal momento che si sta creando un nuovo collegamento tra i due utenti, non aggiornandolo, a quanto pare.

+0

Non ho l'oggetto @friend in quella vista, ho solo il suo id, non funziona. – Joe

+0

Ho risolto il problema con l'amico ma non funziona ancora: annotando il tuo codice mi segnala un errore di instradamento: nessuna route corrisponde a {: action => "show",: controller => "friends",: user_id => # Joe

+0

stai usando le guide 3? L'ho appena provato in uno dei miei progetti usando jquery e jquery-rails e ha funzionato. Prova: metti come simbolo invece di una stringa (il mio errore). –