controllers Test version1.1

This commit is contained in:
HuJiaxuan 2017-01-02 03:03:49 +00:00
commit 64416e7a8a
7 changed files with 218 additions and 156 deletions

View File

@ -1,7 +1,14 @@
class ProjectsController < ApplicationController class ProjectsController < ApplicationController
before_action :authenticate before_action :authenticate
skip_before_action :verify_authenticity_token, :only => [:index,:create,:addUsers,:detail] skip_before_action :verify_authenticity_token, :only => [
:index,
:create,
:addUsers,
:detail,
:update,
:deleteUsers
]
#=============================================>获取我的项目列表user_id保存在session中. #=============================================>获取我的项目列表user_id保存在session中.
def index def index
@ -32,80 +39,112 @@ class ProjectsController < ApplicationController
#=============================================>创建项目 #=============================================>创建项目
def create def create
uid = session[:user_id]
user_id = session[:user_id] project = Project.new(project_params)
params_project = {content: params[:content],name: params[:name]} if project.save
project = Project.new(params_project) Projects_user.create(project_id:project.id,user_id:uid)
if project.save render status: :created, nothing: true
Projects_user.create(project_id:project.id,user_id:user_id) else
render status: :created, nothing: true render json: project.errors, status: :unprocessable_entity
else end
render json: project.errors, status: :unprocessable_entity end
end
#render :json => {:code => 0}
end
#=============================================>项目添加用户 #=============================================>项目添加用户
def addUsers def addUsers
uid = User.find_by(email:params[:email]).id# 需要添加的用户
uid = params[:user_id] register = session[:user_id]# 当前用户
register = session[:user_id] pid = params[:project_id]
#username = params[:username] # 检查该项目中是否已经有要添加的用户
pid = params[:project_id] pu_exist=Projects_user.find_by(project_id:pid,user_id:uid)
params_pu = {project_id: pid,user_id: uid} if pu_exist.nil?# 不存在
pu = Projects_user.new(params_pu) params_pu = {project_id: pid,user_id: uid}
pu.save pu = Projects_user.new(params_pu)
content = User.find_by(id: register).name + "邀请您进入项目" + Project.find_by(id: pid).name pu.save
puts content
params_note = {user_id: uid,content: content,category: 2,project_id: pid} content = User.find_by(id: register).name + "邀请您进入项目" + Project.find_by(id: pid).name
note = Note.new(params_note) puts content
note.save! params_note = {user_id: uid,content: content,category: 2,project_id: pid}
#puts Note.find_by(id: note.id).inspect note = Note.new(params_note)
# now = Datetime.now note.save!
# note.created_at = now render :json => {:code => 0}
# note.updated_at = now else# 存在
note.save! render json:current_user.errors, status: :unprocessable_entity
render :json => {:code => 0} end
end
#=============================================>项目删除用户
def deleteUsers
uid = params[:user_id]# 需要添加的用户
register = session[:user_id]# 当前用户
pid = params[:project_id]
# 检查该项目中是否已经有要添加的用户
projects_user=Projects_user.find_by(project_id:pid,user_id:uid)
if projects_user.nil?# 不存在
render json:current_user.errors, status: :unprocessable_entity
end
# 存在
puts projects_user.user_id
puts projects_user.project_id
Projects_user.where(project_id:pid,user_id:uid).delete_all
content = User.find_by(id: register).name + "把您从项目" + Project.find_by(id: pid).name+"中删除"
puts content
params_note = {user_id: uid,content: content,category: 2,project_id: pid}
note = Note.new(params_note)
note.save!
render :json => {:code => 0}
end end
#=============================================>项目详情 #=============================================>项目详情
def detail def detail
#Todo #Todo
pid = params[:id] pid = params[:id]
project = Project.find_by(id: pid) project = Project.find_by(id: pid)
#uid = Projects_user.where(:project_id => pid) #uid = Projects_user.where(:project_id => pid)
users = [] users = []
projects_users = Projects_user.where("project_id = ?",pid).all projects_users = Projects_user.where("project_id = ?",pid).all
projects_users.each do |projects_user| projects_users.each do |projects_user|
uid = projects_user.user_id uid = projects_user.user_id
i = User.find_by(id: uid) i = User.find_by(id: uid)
users += [{ users += [{
:nickname => i.name, :nickname => i.name,
:id => i.id :id => i.id
}] }]
end end
#puts users.inspect #puts users.inspect
# Users.find(uid).each do |i| # Users.find(uid).each do |i|
# users += [{ # users += [{
# :nickname => i.name, # :nickname => i.name,
# :id => i.id # :id => i.id
# }] # }]
# end # end
render :json => { render :json => {
:code => 0, :code => 0,
:data => { :data => {
:name => project.name, :name => project.name,
:content => project.content, :content => project.content,
:users => users :users => users
}
} }
}
end end
#=============================================>项目修改
def update
project = Project.find_by(:id => params[:project][:id])
if project.update(project_params)
render :json => {:code => 0}
else
render json:current_user.errors, status: :unprocessable_entity
end
end
private private
def project_params def project_params
params.require(:project).permit(:name,:content) params.require(:project).permit(:name,:content,:id)
end end
end end

View File

@ -1,7 +1,7 @@
class Project < ActiveRecord::Base class Project < ActiveRecord::Base
has_and_belongs_to_many :users has_and_belongs_to_many :users
validate :require_at_least_on_user,on: :update # 项目中最少要有一个用户 validate :require_at_least_on_user,on: :update # 项目中最少要有一个用户
validates :name, presence: true, length: { minimum: 1, maximum: 50 }, uniqueness: true validates :name, presence: true, length: { minimum: 1, maximum: 50 }, uniqueness: true

View File

@ -68,7 +68,9 @@ Rails.application.routes.draw do
get 'projects' => 'projects#index' get 'projects' => 'projects#index'
post 'projects' => 'projects#create' post 'projects' => 'projects#create'
patch 'projects' => 'projects#update'
post 'projects/users' => 'projects#addUsers' post 'projects/users' => 'projects#addUsers'
delete 'projects/users' => 'projects#deleteUsers'
get 'projects/detail' => 'projects#detail' get 'projects/detail' => 'projects#detail'
get 'notes/list' => 'notes#getNotesList' get 'notes/list' => 'notes#getNotesList'

View File

@ -37,7 +37,7 @@
//3:通知 //3:通知
//4:修改个人信息 //4:修改个人信息
//5:项目详情 edited by cy //5:项目详情 edited by cy
var src_array=["project_select","task","share","inform","alter_info","project_detail"]; var src_array=["project_select","task","share","inform","user_detail","project_detail"];
var src="pages/"+src_array[seq]+".html"; var src="pages/"+src_array[seq]+".html";
if(seq == 5){ if(seq == 5){
$("#cy_close").click(); $("#cy_close").click();

View File

@ -62,14 +62,14 @@
<div class="form-group row has-feedback"> <div class="form-group row has-feedback">
<label for="inputEmail3" class="col-sm-2 col-md-push-2 control-label">项目名称</label> <label for="inputEmail3" class="col-sm-2 col-md-push-2 control-label">项目名称</label>
<div class="col-sm-6 col-md-push-2"> <div class="col-sm-6 col-md-push-2">
<input type="text" class="form-control" value="11" id="name" name="name" placeholder="姓名"> <input type="text" class="form-control" value="" id="project_name" placeholder="请输入项目名称">
</div> </div>
</div> </div>
<!-- ./form-group --> <!-- ./form-group -->
<div class="form-group row has-feedback"> <div class="form-group row has-feedback">
<label for="inputPassword3" class="col-sm-2 col-md-push-2 control-label">项目简介</label> <label for="inputPassword3" class="col-sm-2 col-md-push-2 control-label">项目简介</label>
<div class="col-sm-6 col-md-push-2"> <div class="col-sm-6 col-md-push-2">
<input type="text" class="form-control" value="11" id="address" name="address" placeholder="地址"> <textarea class="form-control" value="" id="project_content" placeholder="请输入项目简介"></textarea>
</div> </div>
</div> </div>
<!-- ./form-group --> <!-- ./form-group -->
@ -77,7 +77,7 @@
</div> </div>
<!-- /.box-body --> <!-- /.box-body -->
<div class="box-footer"> <div class="box-footer">
<button onclick="cy_submit()" class="btn btn-primary pull-right">提交修改</button> <button onclick="basic_alter()" class="btn btn-primary pull-right">提交修改</button>
</div> </div>
<!-- /.box-footer --> <!-- /.box-footer -->
</div> </div>
@ -92,7 +92,6 @@
</div> </div>
<!-- /.box-header --> <!-- /.box-header -->
<!-- form start --> <!-- form start -->
<form role="form">
<div class="box-body"> <div class="box-body">
<div class="row"> <div class="row">
<div class="col-lg-9 col-md-push-2"> <div class="col-lg-9 col-md-push-2">
@ -104,14 +103,6 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr>
<td>杨诏</td>
<td><button class="btn btn-primary btn-danger">删除</button></td>
</tr>
<tr>
<td>杨诏</td>
<td><button class="btn btn-primary btn-danger">删除</button></td>
</tr>
</tbody> </tbody>
</table> </table>
</div> </div>
@ -120,16 +111,15 @@
<!-- /.row --> <!-- /.row -->
<div class="form-group row has-feedback"> <div class="form-group row has-feedback">
<div class="col-sm-6 col-md-push-2"> <div class="col-sm-6 col-md-push-2">
<input type="text" class="form-control" value="" id="cy_new_user" name="address" placeholder="输入新成员邮箱"> <input type="text" class="form-control" value="" id="new_user_email" placeholder="输入新成员邮箱">
</div> </div>
<div class="col-sm-2 col-md-push-2"> <div class="col-sm-2 col-md-push-2">
<button onclick="cy_addUser()" class="btn btn-primary btn-success">添加成员</button> <button onclick="addUser()" class="btn btn-primary btn-success">添加成员</button>
</div> </div>
</div> </div>
<!-- ./form-group --> <!-- ./form-group -->
</div> </div>
<!-- /.box-body --> <!-- /.box-body -->
</form>
</div> </div>
</div> </div>
<!-- ./col --> <!-- ./col -->
@ -158,114 +148,143 @@
$.ajax({ $.ajax({
type:"get", type:"get",
dataType:"json", dataType:"json",
url:"/projects.json", url:"/projects/detail.json",
data:{ data:{
"id":parent.LoginUserInfo.selectProject "id":parent.LoginUserInfo.selectProject
}, },
statusCode: { statusCode: {
200: function(rpstr) {// 请求成功 200: function(rpstr) {// 请求成功
var robj = eval('('+rpstr+')'); var data=rpstr.data;
if(robj["code"]=="0"){ if(rpstr.code=="0"){
$("#name").val(robj["name"]); $("#project_name").val(data.name);
$("#address").val(robj["content"]); $("#project_content").val(data.content);
var users = robj["users"]; var users = data.users;
for(var i = 0; i < users.length; ++i){ for(var i = 0; i < users.length; ++i){
var tduser = $("<td></td>").text(users[i]["nickname"]); var tduser = $("<td></td>").text(users[i].nickname);
var btn = $("<button></button>").text("删除"); var btn = $("<button></button>").text("删除");
btn.attr("class","btn btn-primary btn-danger"); btn.attr("class","btn btn-primary btn-danger");
btn.attr("onclick","cy_deleteUser("+users[i]['id']+")"); btn.attr("onclick","deleteUser("+users[i].id+")");
var tdbtn = $("<td></td>").append(btn); if( users[i].id!=parent.LoginUserInfo.id ){// 不能将自己从项目中删除
var tdbtn = $("<td></td>").append(btn);
}
$("#cy_user_lists").children("tbody").append($("<tr></tr>").append(tduser,tdbtn)); $("#cy_user_lists").children("tbody").append($("<tr></tr>").append(tduser,tdbtn));
} }
} }
else{ else{
//todo alert("服务器内部出错啦!");
} }
}, },
401:function(){// 未授权 401:function(){// 未授权
// TODO
} }
} }
}); });
}); });
function cy_addUser(){ function addUser(){
$.ajax({ var new_user_email=$("#new_user_email").val();
type:"post", if( new_user_email.length>0 ){
dataType:"json", // 邮箱对应的用户是否存在
url:"/projects.json", var exist;
data:{ $.ajax({
"user_id":$("#cy_new_user"), type: "get",
"project_id":parent.LoginUserInfo.selectProject dataType: "json",
}, url:"/users/emailExist.json",
statusCode: { async:false,// 强制同步
200: function(rpstr) {// 请求成功 data: {
var robj = eval('('+rpstr+')'); "email":new_user_email
if(robj["code"]==0){
window.location.reload();
}
else{
//todo
}
}, },
401:function(){// 未授权 statusCode: {
200: function(data) {// 请求成功
//alert(data);
if( data=='1' )
exist=true;
else
exist=false;
},
422:function(){
alert("输入不符合要求,请重新输入!");
},
401:function(){// 未授权
alert("用户名或密码错误!");
}
} }
} });
}); if( exist ){// 邮箱存在
$.ajax({
type:"post",
dataType:"json",
async:false,// 强制同步
url:"/projects/users.json",
data:{
"email":new_user_email,
"project_id":parent.LoginUserInfo.selectProject
},
statusCode: {
200: function(response) {// 请求成功
alert("添加成功!");
window.location.reload();
},
422:function(){
alert("用户已经在项目中!")
}
}
});
}else{// 邮箱不存在
alert("该邮箱对应的用户不存在!")
}
}else{
alert("请输入完整!");
}
} }
function cy_deleteUser(id){ function deleteUser(id){
return;
$.ajax({ $.ajax({
type:"delete", type:"delete",
dataType:"json", dataType:"json",
url:"/projects.json", url:"/projects/users.json",
data:{ data:{
"project_id":parent.LoginUserInfo.selectProject, "project_id":parent.LoginUserInfo.selectProject,
"user_id":id "user_id":id
//todo (write todo for find, need to be edited)
}, },
statusCode: { statusCode: {
200: function(rpstr) {// 请求成功 200: function(response) {// 请求成功
var robj = eval('('+rpstr+')'); alert("删除成功!");
if(robj["code"]==0){ window.location.reload();
window.location.reload();
}
else{
//todo
}
}, },
401:function(){// 未授权 422:function(){
alert("用户不在项目中!")
} }
} }
}); });
} }
function cy_submit(){ function basic_alter(){
$.ajax({ var project_content=$("#project_content").val();
type:"patch", var project_name=$("#project_name").val();
dataType:"json", if( project_name.length>0 && project_content.length>0 ){
url:"/projects.json", $.ajax({
data:{ type:"patch",
"project_id":parent.LoginUserInfo.selectProject, dataType:"json",
"name":$("#name").val(), url:"/projects.json",
"content":$("#address").val() data:{
//todo (write todo for find, need to be edited) "project[id]":parent.LoginUserInfo.selectProject,
}, "project[name]":project_name,
statusCode: { "project[content]":project_content
200: function(rpstr) {// 请求成功 },
var robj = eval('('+rpstr+')'); statusCode: {
if(robj["code"]==0){ 200: function(rpstr) {// 请求成功
window.location.reload(); var robj = rpstr;
if(robj["code"]==0){
alert("修改成功!");
window.location.reload();
}
},
422:function(){
alert("输入不符合要求,请重新输入!");
} }
else{ }
//todo });
} }else{
}, alert("请输入完整!");
401:function(){// 未授权 }
}
}
});
} }
</script> </script>
</body> </body>

View File

@ -188,6 +188,7 @@
var jstr = htmlobj.responseText; var jstr = htmlobj.responseText;
var robj = eval('('+jstr+')'); var robj = eval('('+jstr+')');
console.log(jstr); console.log(jstr);
var count=0;
if(robj["code"]==0){ if(robj["code"]==0){
var data = robj["data"]; var data = robj["data"];
for(var i=data.length-1;i>=0;--i){ for(var i=data.length-1;i>=0;--i){
@ -208,7 +209,7 @@
tp.find("#cy_template_shares_count").attr("id","cy_shares_count_"+id); tp.find("#cy_template_shares_count").attr("id","cy_shares_count_"+id);
tp.find("#cy_template_enterbtn").attr("id","cy_enter_"+id); tp.find("#cy_template_enterbtn").attr("id","cy_enter_"+id);
tp.find("#cy_template_bg").attr("class","widget-user-header "+bg_color[Math.floor(Math.random()*4)]); tp.find("#cy_template_bg").attr("class","widget-user-header "+bg_color[(count++)%4]);
tp.find("#cy_template_bg").attr("id","cy_bg_"+id); tp.find("#cy_template_bg").attr("id","cy_bg_"+id);

View File

@ -183,11 +183,12 @@
statusCode: { statusCode: {
200: function(data) {// 请求成功 200: function(data) {// 请求成功
alert("更新成功!"); alert("更新成功!");
window.location.reload();
// alter // alter
LoginUserInfo.name=name; parent.LoginUserInfo.name=name;
LoginUserInfo.email=email; parent.LoginUserInfo.email=email;
LoginUserInfo.phone=phone; parent.LoginUserInfo.phone=phone;
window.location.reload();
}, },
401:function(){// 未授权 401:function(){// 未授权
alert("未登录!"); alert("未登录!");