一种解决方案可能是您的控制器上过滤器之前使用,如:
before_filter :load_user
def load_user
@user = User.find(params[:user_id]) if params[:user_id]
@posts = @user ? @user.posts : Post.scoped
end
然后,你需要重写你的控制器有点才能正常工作。
没有必要对index
行动重构,@posts
已经加载正确的,但你可以做进一步的筛选,只要你喜欢
def index
@posts = @posts.where('updated_at < ?' Time.now)
end
然后更新每一个成员的行动,新,创建,显示,编辑,更新,销毁使用职位作为基地,如:
def new
@post = @posts.build
end
def create
@post = @posts.build(params[:task])
end
def show
@post = @posts.find(params[:id])
end
def edit
@post = @posts.find(params[:id])
end
def update
@post = @posts.find(params[:id])
end
def destroy
@post = @posts.find(params[:id])
end
当然,您可以添加其他之前的过滤器,以删除重复的代码。