2013-07-28 2 views
0

У меня есть некоторые проблемы с моим запросом ajax в приложении rails.рельсы запрос ajax не обновляет данные

Я делаю запрос, я беру некоторые параметры из ссылки, когда я нажимаю, а затем я хочу обновить часть, содержащую изображения из моей базы данных.

вот мой Аякс

$.ajax({ 

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


    }); 

дело в том, что в рельсах оболочку я получить прошел мой Params. , но он не вносит никаких изменений в представление.


моя оболочка:

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) 

я хочу обновить частично, который содержит изображения из моей базы данных.

Это часть, которую я хочу обновить.

#miniDiv 

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

мой контроллер:

 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 

ответ

3

Вы должны сделать эту замену либо в ответ или AJAX обратного вызова:

Response делать замены

Вам нужно сделать файл 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')%>') 

Я не уверен в этом пути, приложение будет жаловаться, если этот путь неправильный, вы увидите это в консоли браузера, так как это AJAX. Я не знаю, что опция conditions также поддерживается.

Ответные делают замену

$.ajax({ 

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


}); 

Примечание Я удалил dataType: 'script' здесь, так как вы не хотите выполнять ответ сервера.

В этом случае, вы могли бы ответить, что HTML вы отвечаете:

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

Примечание Я изменил формат Вашего ответа, так как вы рендеринга HTML.

Ярлык

Наконец, если вы хотите загрузить содержимое с сервера внутри контейнера на вашей странице вы можете быть заинтересованы в load:

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

Я стараюсь с «Ответный делать замену» вариант и работал отлично для меня, спасибо большое. Я попробую позже с другими опциями Еще раз спасибо Хуан – yojuako

Смежные вопросы