2011-01-20 18 views
17

Quiero un enlace para actualizar un recurso, sin usar un formulario HTML.link_to update (without form)

Rutas:

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

rutas Rake:

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

que quieren utilizar la opción de venta para actualizar un amigo por un enlace sencillo, algo como esto:
< % = link_to "Agregar como amigo", user_friend_path (current_user,: method => 'put')%>

Pero cuando Rails se encuentra con ese enlace intenta entrar en la acción de mostrar.
La pregunta es: ¿cuál es el enlace correcto para hacer eso?

+0

¿Ha intentado agregar parámetro de acción? <% = link_to "Agregar como amigo", user_friend_path (current_user,: method => 'put,: action =>: update')%> ¿Y por qué necesitas poner el método si no pasas ningún parámetro de actualización? –

Respuesta

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

insertará un enlace con el atributo 'datos método' set de 'poner', que será recogido a su vez por los carriles javascript y se convirtieron en una forma detrás de las escenas ... supongo que es Lo que quieras.

Debería considerar usar: publicar, ya que está creando un nuevo enlace entre los dos usuarios, sin actualizarlo, parece.

+0

No tengo el objeto @friend en esa vista, solo tengo su identificación, no funciona. – Joe

+0

Lo solucioné para qué sobre amigo pero aún no funciona: escribiendo su código me informa un error de enrutamiento: Ninguna ruta coincide con {: acción => "mostrar",: controlador => "amigos",: ID_usuario => # Joe

+0

¿está utilizando raíles 3? Lo probé en uno de mis proyectos usando jquery y jquery-rails y funcionó. Pruebe: poner como un símbolo en lugar de una cadena (mi error). –