Ruby on Rails - 按下按钮时刷新数据

时间:2017-03-30 14:01:26

标签: jquery sql ruby-on-rails ruby ajax

我的网站包含照片和视频以及3个按钮。一个只显示照片,一个只显示视频,最后一个显示照片&视频。我在数据库中有两个不同的表(照片,视频),其中只包含文件的名称。他们之间没有任何关系 以下是我的AJAX仅用于显示视频的示例:

jQuery(document).ready(function() {
    $('#btn-videos').on('click', function(e){
    e.preventDefault();
    $.ajax({
    type:'GET',
    url:'/galerie',
    dataType: 'json',
    data: { 'type' : "videos", }
    });
    });
});

这是我的节目主持人控制器:

  def index
     case params[:type]
     when "videos"  
        @medias = Video.order('created_at DESC')
     when "images" 
        @medias = Picture.order('created_at DESC')
     else 
        @medias = (Video.order('created_at DESC') + Picture.order('created_at DESC')).sort_by { |model| model.created_at }.in_groups_of(3)
     end
  end

我的AJAX正在调用控制器,但它不会更新视图 他们是(更好)的方式吗?我也想知道是否可以仅使用sql执行此行:

@medias = (Video.order('created_at DESC') + Picture.order('created_at DESC')).sort_by { |model| model.created_at }.in_groups_of(3)

1 个答案:

答案 0 :(得分:1)

您可以通过两种方式执行此操作:

  1. 通过按钮发送远程请求并处理index.js.erb文件(在views文件夹中)的数据更新。您可以参考this链接。
  2. 在资产的js文件中使用ajax。 ajax请求成功后,您需要将旧数据替换为您请求的新数据。

    $('#btn-videos').on 'click', ->
       e.preventDefault();
       $.ajax
         type:'GET',
         url:'/galerie',
         dataType: 'json',
         data: { 'type' : "videos", }
         success: (data) ->
           console.log(data)