2012-07-10 10 views
5

Tengo una página con varios mensajes, cada uno con un enlace que cambia (refina) la calificación de ese mensaje. Cuando un usuario hace clic en este enlace, quiero una llamada AJAX que actualice el valor de columna correspondiente en la base de datos para ese mensaje. Cuando se hace clic en este enlace, no debe pasar nada visiblemente. No debe haber actualización o recarga de la página.Usando link_to remote: true para pasar los parámetros a los raíles

He estado tratando de hacer esto usando link_to remote: cierto, pero parece que no puedo hacer que funcione. La documentación en línea no está clara en esta pregunta y con los cambios entre Rails 2 y 3, algunas cosas como: with ya no son compatibles.

He copiado lo que tengo hasta ahora, pero sé que está lejos incluso de acercarse a una solución. En términos de parámetros que necesito pasar a la base de datos, necesito el profile_id, el message_id y el new_rating.

¡Gracias de antemano!

show.html.haml

.status-bar 
    = link_to "", { action: :refine_result }, remote: true 

profile_controller.rb

... 

def refine_result 
    @refinement = ResultRefinement.new 
    @refinement.profile_id = params[:profile_id] 
    @refinement.message_id = params[:message_id] 

    @refinement.save 

    respond_to do |format| 
    format.html { render nothing: true } 
    format.js { render nothing: true } 
    end 
end 

result_refinement.rb

class ResultRefinement < ActiveRecord::Base 
    attr_accessible :profile_id, :message_id, :new_rating, :deleted 

    belongs_to :profile 
end 

Respuesta

6

Es necesario configurar una ruta para ProfileController#refine_result primero. Algo así como

match '/profile/refine_results' => 'profile#refine_results', :as => 'refine_results' 

continuación, puede utilizar

.status-bar 
    = link_to "", refine_results_url(profile_id: 1, message_id: 100, new_rating: "awful"), remote: true 
+0

impresionante. Lo tengo para comenzar a pasar los parámetros y guardarlos en la base de datos. El único problema que todavía tengo es evitar que la página redireccione o cambie. –

+0

Parece que otro archivo js estaba sobrescribiendo el ajax. Por eso sigo siguiendo el enlace en lugar de hacer que ajax tome el control. –

Cuestiones relacionadas