2013-04-30 66 views
0

在Ruby on Rails应用程序中,我希望能够在输入文本框中放置用户的用户名,按下“添加”按钮,并使其显示在下方他们的细节。然后,如果我想使用另一个按钮,我可以简单地将它们从列表中删除。使用Javascript在Rails管理界面中添加/删除用户

如何连接Javascript和Rails数据库来专门用这些按钮来完成这样的任务?尽管Javascript并不是我的强项,但我更加困惑于如何使用Javascript提取和修改Rails数据库。作为参考,我也使用MongoDB。

什么是最好的方法来解决这个问题?

Popular::User UI Add/Remove

下面是我使用“POST”到服务器端点“管理/流行/ users.json”的jQuery和AJAX代码,但我不知道怎么弄的Rails使用我的Popular :: User模型在数据库中创建一个新用户。

$(document).ready(function() { 
    $('.add-to-popular-users-button').click(function(event){ 
     event.preventDefault(); 
     var addToPopularUsersBtn = $(this); 
     var userToBeAdded = $('input[name=popular_user]').val(); 
     var data = { 'popular_user': {'username': userToBeAdded, 'category': 'popular'} }; 
     var url = "/admin/popular/users.json"; 
     $.ajax({ 
      url: url, 
      data: data, 
      dataType: 'json', 
      type: 'POST', 
      success: function(e) { 
       alert('Great success!'); 
      } 

     }); 
    }); 
}); 

这里是我的人气::用户模式:

class Popular::User 
    include Mongoid::Document 
    include Mongoid::Timestamps 

    POPULAR = 'popular' 

    field :category, default: POPULAR 
    index :user_id 

    belongs_to :user 

    validates_presence_of :user_id 
    validates_uniqueness_of :user_id 

    def self.popular 
     user_ids = self.where(:category => POPULAR).map(&:id) 

     User.where(:_id.in => user_ids) 
    end 
+0

我有UI设置,这是一个表和标准的按钮布局。我将用图像编辑。我也有数据库查询具有特定“类别”属性的正确用户。 – 2013-04-30 20:05:29

回答

0

所以,我能够通过一些测试来了解这一点。但是,基本上,您可以使用AJAX/jQuery或使用Rails固有的RESTful体系结构执行此操作,即HTTP调用如调用:delete,并将其与特定的UI按钮关联。

您应该认识到的一个重要思想是使用AJAX,无论您使用'POST'或'DELETE'动词发送给正确的服务器端点的数据,还是通过适当的控制器操作都会得到。换句话说,如果我通过'POST'向'/popular/users.json'端点发送数据来创建某些内容,那么def create方法将能够在之后处理数据。然后,您可以将数据分配给控制器操作中的ivar,以便在与控制器操作对应的UI视图中进行解释和操作。

1

我不熟悉Rails框架,但你可以使用AJAX做到这一点。你可以向控制器方法发送一个ajax post请求,该方法将创建一个用户,创建一个表格行(或者重新创建表格),然后返回表格中的html位置。

一个简单的例子是:

$.ajax({ 
type:'post', 
data:{} //user data, 
dataType: 'json', //or any other 
url: 'page_or_method', //page or method that will return html 
success: function (data) { 
    $('div#userTable').html(data); //in case data contains the table 
} 
}); 

阅读$就法(jQuery的),或者你可以使用XMLHttpRequest,如果你不whant使用jQuery。

+0

是的,我想我需要jQuery和AJAX来完成这个任务。它实际上并不用于创建新用户,而是添加已存在的用户并更新属性。我会尝试阅读更多内容。 – 2013-04-30 22:20:50

+0

好吧,我用一些jQuery设置了AJAX代码。我会用代码更新原始帖子。我现在的问题是,我不知道如何创建热门::用户,因为它不工作,并且当我检查rails控制台时没有显示在我的数据库中。 – 2013-05-07 20:47:06

相关问题