# 獲取父节点群
# params = {'other' => 'other','person_id' => 'admin', 'blog_id' => '3', 'post_id' => '1'}
def get_parent
return @parent if defined?(@parent)
parent = {}
params.each do |name, value|
if name =~ /(.+)_id$/
if parent.empty?
parent = {:type => $1, :id => value, :path => $1, :ids => {}, :pids => {'id' => value}}
else
parent[:path] = "#{$1}_#{parent[:path]}"
parent[:pids][name] = value
parent[:ids][name] = value
end
end
end
@parent = parent
end
def create
# :type=>"post"
@commentable = @parent[:type].classify.constantize.find(@parent[:id])
@comment = @commentable.comments.new(params[:comment])
@comment.author = current_person
flash[:success] = I18n.t('person.successful.created') if @comment.save
respond_with(@comment, :location => commentable_path)
end
private # 聲明私有
def commentable_path
# :path=>"person_blog_post"
# :pids=>{"blog_id"=>"3", "id"=>"1", "person_id"=>"admin"}
send("#{@parent[:path]}_path", @parent[:pids])
end
def destroy
# :type=>"post"
# :id=>"1"
@comment = Comment.where(
:commentable_type => @parent[:type].capitalize!,
:commentable_id => @parents.last[:id],
:_id => params[:id]
).first
flash[:success] = I18n.t('person.successful.destroyed') if @comment.destroy
respond_with(flash[:success], :location => commentable_path)
end
引用
app/viewscomments/new.zh.html.erb
# :path=>"person_blog_post"
# :ids=>{"blog_id"=>"3", "person_id"=>"admin"}
<%= form_for @comment, :url => send("#{@parent[:path]}_comments_path", @parent[:ids]) do |f| %>
分享到:
相关推荐
SQL提供了一种称为公共表表达式(CTE, Common Table Expression)的机制,它可以在查询语句中定义一个临时的结果集,这个结果集可以用于后续的查询操作。对于处理多级分类并构建树形结构,CTE中的递归查询非常有用。...
`WITH`语句,也称为公用表表达式(Common Table Expression, CTE),是SQL中的一种临时结果集,用于定义一个临时的逻辑表,这个表只在当前查询中有效。`WITH`语句配合递归选项,可以实现递归查询,非常适合处理树形...
此外,Greenplum还支持Common Table Expressions (CTE),这是一种用于重用查询结果和构造复杂查询的高级特性,极大地提升了查询的灵活性和效率。 **系统监控与维护** Greenplum提供了如GP Command Center和GP ...
接下来,我们看到了另一种一次性生成TreeView的方法,基于SQL的递归CTE(Common Table Expression)。这种方法使用了WITH语句定义了一个名为TableTemp的临时表,该表包含了所有层级的数据。CTE会从ParentId为0的记录...
这通常需要用到SQL的递归公共表表达式(Recursive Common Table Expression,CTE),通过WITH语句定义一个可迭代的查询结果。 3. **层级遍历**:在前端展示时,可能需要根据用户的选择动态加载下级区域,这就需要在...
本文件"sqlserver父子层次查询.pdf"主要探讨了如何使用递归公共表表达式(Recursive Common Table Expression, CTE)来解决这类问题。下面将详细解释相关知识点。 1. **递归公共表表达式(Recursive CTE)**: ...
首先,Linux路由表的结构是多级分层的,以适应不同的策略路由需求。Linux系统通常使用多个路由表,即使不涉及策略路由,也会有两个主要的表:一个是用于处理本地主机的上层协议,另一个用于数据包的转发。路由表不是...
SQL Server 2005及以后版本引入了公用表表达式(CTE,Common Table Expression)来支持递归查询,这极大地简化了处理这类问题的方式。 公用表表达式是一个在查询语句中定义的临时结果集,它可以在FROM子句中被多次...
在MSSQL中,我们可以利用公用表表达式(Common Table Expressions,CTEs)和递归的CTE来完成类似的操作。递归CTE实际上是一个可以引用自身的CTE。在定义CTE时,使用WITH关键字,然后指定CTE名称和列名,CTE的主体是...
在本例中,我们看到一个具体的示例,它使用了Common Table Expression(CTE)来实现这一目标。以下是详细的知识点解释: 1. **Common Table Expression (CTE)**: CTE是SQL中的一个临时结果集,可以在查询语句中定义...
CTE(Common Table Expression)定义 递归查询的核心是CTE(通用表表达式),在这个例子中使用了`WITH`语句来定义名为`myT2`的CTE。CTE可以看作是一个临时的结果集,它只存在于其包含的查询内部,并且可以递归地引用...
<table class="table table-bordered table-hover table-item spggdytable" id="ggxtable" v-show="isAddSpecifications"> 排序 规格项 操作 (item, index) in specifications"> <td>{{ index }} ...
在SQL Server中,可以使用Common Table Expression(CTE)结合递归来实现这个功能。`deptTab`是存储部门信息的表,其中`pid`代表父部门ID,`id`是部门ID。以下是如何查询当前部门(由`@id`参数指定)的所有子部门: ...
其中,`table` 是我们要自连接的表,`alias1` 和 `alias2` 是给表起的别名,`common_column` 是连接条件所基于的字段,`condition` 是进一步限制查询结果的过滤条件。 3. 示例分析: 假设我们有一个 `areas` 表,...
common.js 实现数据检验的独立的.js文件。 第2章(\c02) 实例描述:学习JavaScript的基本语法。 2.1.html JavaScript中this在不同位置指向的对象。 2.2.html null类型的简单应用。 2.3.html 算术...