91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

rails入門級開發項目——樹形分類(1)

發布時間:2020-06-22 23:38:40 來源:網絡 閱讀:733 作者:oahcil 欄目:編程語言

今天要做的是這么個東東,先上數據庫:

rails入門級開發項目——樹形分類(1)

是一個簡單的樹形結構,一個tree_id對應一個parent_id,相當于對應一個父節點,涉及到了自身的連接關系,其實還是挺復雜的數據庫設計,起碼當初這個設計是怎么也木有看懂~


想要達到的想法是動態的在節點上增刪改,可以用鼠標各種拖動換parent那種。不過現在的本事只能做成靜態的,現在的狀態是點擊某一節點的鏈接會顯示自己,父親,兒子,以及兄弟。


閑話少說,上代碼:


數據庫生成部分,很簡單的兩個屬性,注意id:false這句話,這是ruby 1.9之后才支持的特性,其實等同于 :id => false ,也就是說沒有在這個表中給規定rails默認的id,那怎么辦?請看model部分~

class CreateTreeProviders < ActiveRecord::Migration
  def change
    create_table :tree_providers, id: false do |t|
      t.integer :tree_id
      t.integer :parent_id
      t.timestamps
    end
  end
end


model部分在這里~注意這里面的has_many后面跟復數,belongs_to后面放單數~~而且這兩者同樣的foreignkey都是parent_id,但是意思卻是不一樣的。前者是把自己作為主鍵,parent_id是別人的,后者相反,parent_id是自己的~這是我現在的理解。放了一個驗證函數,保證在save之前執行,確保自己不能是自己的parent。

class TreeProvider < ActiveRecord::Base
  attr_accessible :parent_id, :tree_id
  has_many :tree_providers  , foreign_key: :parent_id
  belongs_to :tree_provider , foreign_key: :parent_id
  set_primary_key :tree_id
  before_save :judge_self
  def judge_self
    if parent_id == tree_id
      false
    end
  end
end

Controller部分~~只更改了show這一個地方。注意@tree_provider.tree_provider和@tree_provider.tree_providers的區別,其實這樣表示很沒有區分啦,所以一個現在解決不了的問題來了,如何才能實現@tree_provider.parent 和@tree_provider.children?求各路大神幫助ORRRZparams[:id].to_i 這句話的目的是在其父親的所有兒子中將自己排除掉獲得所有兄弟,結果也是各種試出來的,因為發現params[:id]是一個字符串

def show
   @tree_provider = TreeProvider.find(params[:id])
   @children = []
   @tree_provider.tree_providers.each{|t|@children<<t.tree_id }
   @parent = @tree_provider.tree_provider
   @brothers = []
   @parent.tree_providers.each{|t|@brothers<<t.tree_id }
   @brothers.delete(params[:id].to_i)
   respond_to do |format|
     format.html # show.html.erb
     format.json { render json: @tree_provider }
   end
 end

view就太簡單啦,只是把@children和@brothers都顯示出來而已,鑒于水平太低就不貼代碼啦,運行結果是這樣的:

rails入門級開發項目——樹形分類(1)

上面是所有tree的list,下面是單獨的一個節點的信息。

rails入門級開發項目——樹形分類(1)

很無聊的東東,聊以自high啦~


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴海县| 怀仁县| 喀喇| 通许县| 平罗县| 汾阳市| 平潭县| 泽库县| 永仁县| 福建省| 额敏县| 望奎县| 曲水县| 邢台市| 成武县| 册亨县| 依兰县| 宁都县| 喜德县| 抚顺县| 荣成市| 肇源县| 沁水县| 辰溪县| 平罗县| 天祝| 徐汇区| 沙洋县| 齐河县| 岳阳县| 方正县| 太保市| 凌云县| 曲阜市| 横峰县| 化德县| 田东县| 河津市| 驻马店市| 萨嘎县| 突泉县|