2013-07-28 55 views
0

我在Rails应用程序中遇到了一些麻烦与我的ajax请求。Rails ajax请求不刷新数据

我提出了一个请求,当我单击时,我从链接中取出一些参数,然后我想刷新包含来自数据库的图像的部分。

,这里是我的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回调:

响应做更换

你需要渲染一个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