/ La richiesta ajax / rails non aggiorna i dati: ruby-on-rails, ajax, refresh

rails ajax request non aggiorna i dati: ruby-on-rails, ajax, refresh

ho dei problemi con la mia richiesta ajax in un'app di rails.

Faccio una richiesta, prendo alcuni parametri da un collegamento quando faccio clic e quindi voglio aggiornare il mio parziale che contiene immagini dal mio database.

ecco il mio ajax

    $.ajax({

url:"gallery",
data: { pie :categoria},
type: "GET",
async: true,
dataType: "script"


});

il fatto è che nella shell di rails vengo passato ai miei parametri. ma non apporta modifiche alla visualizzazione.


il mio guscio:

Started GET "/gallery?pie=VibPellizcables&_=1375047201412" for 127.0.0.1 at Sun Jul 28 18:33:21 -0300 2013
Processing by GalleryController#pro as JS
Parameters: {"pie"=>"VibPellizcables", "_"=>"1375047201412"}
Product Load (0.1ms)  SELECT `products`.* FROM `products` WHERE `products`.`pie` = "VibPellizcables"
Rendered sexytoys/_algo.html.haml (0.1ms)
Completed 200 OK in 1ms (Views: 0.6ms | ActiveRecord: 0.1ms)

voglio aggiornare un parziale che contiene immagini dal mio database.

questo è il parziale che voglio aggiornare.

  #miniDiv

%ul#miniRecuadro
- @products.each do |product|
%li.mini= image_tag product.pic.url(:thumb)

il mio controller:

      def gallery
@products = Product.find(:all, :conditions => {:pie => params[:pie]})
#render :partial => "algo"
flash[:notice] = "Mensaje ENVIADO >>"
respond_to do |format|

format.js {render :partial => "algo", :conditions => {:pie => params[:pie]}}
# format.json { render :json => @products  }
end

risposte:

3 per risposta № 1

Devi fare quella sostituzione in risposta o richiamata AJAX:

È necessario eseguire il rendering di un file JS:

# app/controllers/gallery_controller.rb
def pro
...
respond_to do |format|
format.js # no render here
end
...
end

# app/views/gallery/pro.js.erb
$("#your-container").html("<%= j( render partial: "algo" )%>")

Non sono sicuro di questo percorso, l'applicazione si lamenterà se questo percorso è sbagliato, lo vedrai nella console del browser poiché questo è AJAX. Non lo so conditions l'opzione è supportata anche in vista.

Richiamata facendo sostituzione

$.ajax({

url:"gallery",
data: { pie :categoria},
type: "GET",
async: true,
success: function(response){
$("#your-container").html(response);
}


});

Nota che ho rimosso dataType: "script" qui, poiché non si desidera eseguire la risposta del server.

In questo caso, potresti rispondere con quell'html a cui stai rispondendo:

# gallery_controller.rb
...
format.html {render :partial => "algo", :conditions => {:pie => params[:pie]}}
...

Nota ho cambiato il formato della tua risposta poiché stai eseguendo il rendering html.

scorciatoia

Infine, se vuoi caricare contenuti dal tuo server all'interno di un container nella tua pagina potresti essere interessato caricare:

$("#your-container").load("gallery", { pie: categoria });