Tengo este código JQuery:

$("p.exclamation, div#notification_box").live("mouseover", function() {

    });

y quiero llamar a este rieles método desde el interior el código jQuery como una devolución de llamada:

def render_read
  self.user_notifications.where(:read => false).each do |n|
    n.read = true
    n.save
  end
end

Este método es en mi modelo de usuario. Hay alguna forma de hacer esto?

InformationsquelleAutor user730569 | 2011-05-09

4 Comentarios

  1. 35

    Hacer una llamada AJAX, establecer una ruta, responder con una acción de controlador y llame a su método.

    # whatever.js
    $("p.exclamation, div#notification_box").on("mouseover", function() {
      $.ajax("/users/render_read")
    });
    
    # routes.rb
    resources :users do
      get :render_read, on: :collection 
      # or you may prefer to call this route on: :member
    end
    
    # users_controller.rb
    def render_read
      @current_user.render_read
      # I made this part up, do whatever necessary to find the needed user here
    end

    PS: Este código es para Rails 3.x y Ruby 1.9.x

    • Hay que ir, más simple de lo que pensaba.
  2. 4

    Es bueno que usted tiene que el modelo de código. Vamos a añadir una nueva acción y asegúrese de que la ruta de instalación. Si usted está utilizando los recursos, usted tendrá que agregar colección o de un miembro. Puesto que usted está haciendo una actualización de elegiría PUT como el método http.

    He aquí un ejemplo de la ruta:

    resources :user_notifications do
      collection do
        put 'render_read'
      end
    end

    Seguir adelante y añadir el render_read de acción para su control.

    Tu código jQuery se verá algo como esto:

    $("p.exclamation, div#notification_box").live("mouseover", function() {   
      $.ajax({
        url: "/user_notifications/render_read",
        type: 'PUT'
      });
    });
  3. 1

    Que usted necesita para configurar un controlador en el lado del servidor para llamar a su render_read método y, a continuación, podría utilizar $.ajax o $.post en su jQuery para realizar la solicitud.

  4. 1

    Normalmente funciona JavaScript en el lado del cliente, pero también es posible que su aplicación dibuja una función de javaScript para cada cliente. En ese caso, puedes usar el <%= y etiquetas %> en una .erb archivo:

    <script type="text/javascript">
    $(function(){
        new AClass.function({
            text: <%= Date.today %>
        });
    });
    </script>

Dejar respuesta

Please enter your comment!
Please enter your name here