Ruby on rails Rails会阻止类似的控制器动作
我有两个独立的控制器,它们继承自Ruby on rails Rails会阻止类似的控制器动作,ruby-on-rails,dry,Ruby On Rails,Dry,我有两个独立的控制器,它们继承自Admin::UserBaseController,显示可搜索、可排序的用户表,并使用相同的局部视图 Admin::UsersController-显示给定组织上下文中的用户 Admin::OrganizationsController-显示系统的所有用户 以下是Admin::UsersController的索引方法: def index q = "%#{params[:search]}%" @users = User.where("fir
Admin::UserBaseController
,显示可搜索、可排序的用户表,并使用相同的局部视图
-显示给定组织上下文中的用户Admin::UsersController
-显示系统的所有用户Admin::OrganizationsController
def index
q = "%#{params[:search]}%"
@users = User.where("first_name like ? or last_name like ? or username like ?", q, q, q).order(sort_column + ' ' + sort_direction).paginate(:page => params[:page])
respond_to do |format|
format.html # index.html.erb
format.json { render :json => @users }
end
end
def edit
@organization = Organization.find(params[:id])
q = "%#{params[:search]}%"
@users = @organization.users.where("first_name like ? or last_name like ? or username like ?", q, q, q).order(sort_column + ' ' + sort_direction).paginate(:page => params[:page])
end
q = "%#{params[:search]}%"
@users = @organization.users.search_identity( q ).user_order( sort_column, sort_direction).paginate(:page => params[:page])
以下是Admin::OrganizationsController的编辑方法:
def index
q = "%#{params[:search]}%"
@users = User.where("first_name like ? or last_name like ? or username like ?", q, q, q).order(sort_column + ' ' + sort_direction).paginate(:page => params[:page])
respond_to do |format|
format.html # index.html.erb
format.json { render :json => @users }
end
end
def edit
@organization = Organization.find(params[:id])
q = "%#{params[:search]}%"
@users = @organization.users.where("first_name like ? or last_name like ? or username like ?", q, q, q).order(sort_column + ' ' + sort_direction).paginate(:page => params[:page])
end
q = "%#{params[:search]}%"
@users = @organization.users.search_identity( q ).user_order( sort_column, sort_direction).paginate(:page => params[:page])
这两种方法在分配@users
变量的方式上有很多相似之处。这是用户
和@组织的区别。用户
就是这样。我该如何擦干它?移动
where("first_name like ? or last_name like ? or username like ?", q, q, q).order(sort_column + ' ' + sort_direction).paginate(:page => params[:page])
在用户界面中创建一个方法
例如:
def self.method_name(q,params)
where("first_name like ? or last_name like ? or username like ?", q, q, q).order(sort_column + ' ' + sort_direction).paginate(:page => params[:page])
end
然后用这个方法来代替where,所以这里要强调的是范围。这将删除模型中单个位置的重复查询,并使您能够将作用域链接到类和关联上
class User < ActiveRecord::Base
scope :search_identity, lambda { |identity| where("first_name like ? or last_name like ? or username like ?", identity, identity, identity) }
scope :user_order, lambda { |column,direction| order("#{column} #{direction}") }
end
在Admin::OrganizationsController中:
def index
q = "%#{params[:search]}%"
@users = User.where("first_name like ? or last_name like ? or username like ?", q, q, q).order(sort_column + ' ' + sort_direction).paginate(:page => params[:page])
respond_to do |format|
format.html # index.html.erb
format.json { render :json => @users }
end
end
def edit
@organization = Organization.find(params[:id])
q = "%#{params[:search]}%"
@users = @organization.users.where("first_name like ? or last_name like ? or username like ?", q, q, q).order(sort_column + ' ' + sort_direction).paginate(:page => params[:page])
end
q = "%#{params[:search]}%"
@users = @organization.users.search_identity( q ).user_order( sort_column, sort_direction).paginate(:page => params[:page])
使每件事都简洁明了 望远镜正在改变我的生活。也找到其他地方使用它们。谢谢你的提示。