`
mimosa
  • 浏览: 4976 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

多級commentable處理

阅读更多
  #  獲取父节点群
  # 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处理多级分类,查询结果呈树形结构

    SQL提供了一种称为公共表表达式(CTE, Common Table Expression)的机制,它可以在查询语句中定义一个临时的结果集,这个结果集可以用于后续的查询操作。对于处理多级分类并构建树形结构,CTE中的递归查询非常有用。...

    数据库设计之递归树查询

    `WITH`语句,也称为公用表表达式(Common Table Expression, CTE),是SQL中的一种临时结果集,用于定义一个临时的逻辑表,这个表只在当前查询中有效。`WITH`语句配合递归选项,可以实现递归查询,非常适合处理树形...

    Greenplum数据库架构分析.pptx

    此外,Greenplum还支持Common Table Expressions (CTE),这是一种用于重用查询结果和构造复杂查询的高级特性,极大地提升了查询的灵活性和效率。 **系统监控与维护** Greenplum提供了如GP Command Center和GP ...

    treeview控件1

    接下来,我们看到了另一种一次性生成TreeView的方法,基于SQL的递归CTE(Common Table Expression)。这种方法使用了WITH语句定义了一个名为TableTemp的临时表,该表包含了所有层级的数据。CTE会从ParentId为0的记录...

    数据库文件area.sql

    这通常需要用到SQL的递归公共表表达式(Recursive Common Table Expression,CTE),通过WITH语句定义一个可迭代的查询结果。 3. **层级遍历**:在前端展示时,可能需要根据用户的选择动态加载下级区域,这就需要在...

    sqlserver父子层次查询.pdf

    本文件"sqlserver父子层次查询.pdf"主要探讨了如何使用递归公共表表达式(Recursive Common Table Expression, CTE)来解决这类问题。下面将详细解释相关知识点。 1. **递归公共表表达式(Recursive CTE)**: ...

    山西长治供电公司Linux路由表的结构与算法分析优质资料.doc

    首先,Linux路由表的结构是多级分层的,以适应不同的策略路由需求。Linux系统通常使用多个路由表,即使不涉及策略路由,也会有两个主要的表:一个是用于处理本地主机的上层协议,另一个用于数据包的转发。路由表不是...

    sqlserver实现树形结构递归查询(无限极分类)的方法

    SQL Server 2005及以后版本引入了公用表表达式(CTE,Common Table Expression)来支持递归查询,这极大地简化了处理这类问题的方式。 公用表表达式是一个在查询语句中定义的临时结果集,它可以在FROM子句中被多次...

    在ORACLE、MSSQL、MYSQL中树结构表递归查询的实现.pdf

    在MSSQL中,我们可以利用公用表表达式(Common Table Expressions,CTEs)和递归的CTE来完成类似的操作。递归CTE实际上是一个可以引用自身的CTE。在定义CTE时,使用WITH关键字,然后指定CTE名称和列名,CTE的主体是...

    SQL 获取所有上级的实现方法

    在本例中,我们看到一个具体的示例,它使用了Common Table Expression(CTE)来实现这一目标。以下是详细的知识点解释: 1. **Common Table Expression (CTE)**: CTE是SQL中的一个临时结果集,可以在查询语句中定义...

    递归查询存储过程

    CTE(Common Table Expression)定义 递归查询的核心是CTE(通用表表达式),在这个例子中使用了`WITH`语句来定义名为`myT2`的CTE。CTE可以看作是一个临时的结果集,它只存在于其包含的查询内部,并且可以递归地引用...

    vue利用v-for嵌套输出多层对象,分别输出到个表的方法

    &lt;table class="table table-bordered table-hover table-item spggdytable" id="ggxtable" v-show="isAddSpecifications"&gt; 排序 规格项 操作 (item, index) in specifications"&gt; &lt;td&gt;{{ index }} ...

    sql server递归子节点、父节点sql查询表结构的实例

    在SQL Server中,可以使用Common Table Expression(CTE)结合递归来实现这个功能。`deptTab`是存储部门信息的表,其中`pid`代表父部门ID,`id`是部门ID。以下是如何查询当前部门(由`@id`参数指定)的所有子部门: ...

    【数据库面试必备】MySQL条件查询(六):自连接查询的SQL语句

    其中,`table` 是我们要自连接的表,`alias1` 和 `alias2` 是给表起的别名,`common_column` 是连接条件所基于的字段,`condition` 是进一步限制查询结果的过滤条件。 3. 示例分析: 假设我们有一个 `areas` 表,...

    JavaScript完全自学宝典 源代码

    common.js 实现数据检验的独立的.js文件。 第2章(\c02) 实例描述:学习JavaScript的基本语法。 2.1.html JavaScript中this在不同位置指向的对象。 2.2.html null类型的简单应用。 2.3.html 算术...

Global site tag (gtag.js) - Google Analytics