<code id="nlfbz"><dd id="nlfbz"></dd></code>

  • <table id="nlfbz"><option id="nlfbz"></option></table>
      <output id="nlfbz"><strong id="nlfbz"><small id="nlfbz"></small></strong></output>
    1. 允許在軌道上的紅寶石上發表評論

      01

      的07

      允許注釋

      在戶外在位置上博客

      在之前的迭代中,添加RESTful身份驗證,身份驗證已添加到您的博客中,因此只有授權用戶才能創建博客帖子。此迭代將添加博客教程的最后(和主要)功能:評論。在完成本教程后,用戶可以在博客文章上發布匿名評論而無需登錄。

      02

      of 07

      支架注釋

      創建注釋數據庫表和控制器的過程與創建帖子數據庫表和控制器的方式相同-使用scaffold生成器。腳手架生成器將創建RESTful控制器,映射路線并創建數據庫遷移。但在您接受此操作之前,您必須考慮評論是什么以及其數據成員將是什么。評論有:

      • 姓名(必填字段):評論者的姓名為字符串。
      • 電子郵件(可選字段):評論者的電子郵件為字符串。
      • 正文(必填字段):評論正文為文本。
      • 帖子:這將評論與特定博客帖子相關聯。這是具有多個屬于關聯所必需的。

      一旦你've決定了什么評論's數據成員是,你可以運行腳手架生成器。請注意,帖子字段的類型為"references。&##34;這是一種特殊類型,它將生成一個ID字段,通過外鍵將注釋表與帖子表鏈接起來。

      $腳本/生成支架注釋姓名:字符串電子郵件:字符串正文:文本發布:參考文獻
      存在應用程序/模型/
      存在應用程序/控制器/
      存在應用程序/助手/
      。。。剪斷。。。

      一旦生成控制器和遷移,您就可以可以通過運行db:migrate rake任務繼續運行遷移。

      $rake db:migrate
      ==20080724173258 create comments:migrating====
      -創建表(:注釋)
      ->0.0255s
      ==20080724173258 CreateComments:已遷移(0.0305s)

      03

      of 07

      設置模型

      數據庫表到位后,您可以開始設置模型。在模型中,諸如數據驗證之類的事情-確保存在必填字段-并且可以定義關系。將使用兩種關系。

      博客文章有很多評論。has?many關系不需要't需要帖子表中的任何特殊字段,但注釋表有一個帖子id將其鏈接到帖子表。從軌道上,你可以說110件事@發布獲取屬于@post對象的注釋對象列表。注釋在其父發布對象上也依賴于。如果帖子對象被銷毀,則所有子注釋對象也應銷毀。

      評論屬于post對象。評論只能與單個博客文章相關聯。屬于關系只需要一個post_id字段位于注釋表中。要訪問評論'父發布對象,可以說@評論在軌道上。

      以下是帖子和評論模型。已將多個驗證添加到注釋模型中,以確保用戶填寫必填字段。還要注意,這個關系屬于關系。

      #文件:應用程序/模型/后rb
      class Post
      有很多:評論,:依賴=>:銷毀
      結束
      #文件:應用程序/模型/評論
      class Comment
      屬于:post
      驗證_存在_of:name
      驗證_長度_of:name,:within=>2..20
      驗證_存在_of:body
      end

      04

      of 07

      準備注釋控制器

      注釋控制器不會以使用RESTful控制器的傳統方式使用。首先,它將僅從帖子視圖訪問。評論表單和顯示完全在Post controller的顯示操作中。因此,首先,刪除整個app/view/comments目錄以刪除所有評論視圖。他們贏得了'不需要。

      接下來,您需要從注釋控制器中刪除一些操作。所有需要的's是createdestrow操作。所有其他操作都可以刪除。由于注釋控制器現在只是一個沒有視圖的短柱,因此您必須更改控制器中嘗試重定向到注釋控制器的幾個位置。只要有重定向調用,請將其更改為重定向到(@評論)。以下是完整的注釋控制器。

      #文件:應用程序/控制器/注釋_controler.rb
      類評論控制器和lt;應用控制器
      def create
      @comment=評論(params[:comment])
      如果@評論。保存
      ;flash[:note]='已成功創建注釋。'
      重定向到(@評論)
      其他
      閃光[:note]="錯誤創建評論:#{@評論。錯誤}"
      (@評論)
      end
      end
      def destruct
      @comment=評論(params[:id])
      @評論皮膚保養常識。銷毀
      (@評論)
      end
      end

      05

      of 07

      注釋表格

      最后要實施的部分之一是評論表單,這實際上是一項相當簡單的任務?;旧嫌袃杉乱觯涸谔涌刂破鞯娘@示操作中創建一個新的注釋對象,并顯示一個提交給Commen的創建操作的表單ts控制器。為此,請修改帖子控制器中的顯示操作,如下所示。添加的行以粗體顯示。

      #文件:應用程序/控制器/帖子_controler.rb
      #GET/posts/1
      #GET/posts/1.xml
      def show
      @post=發現(參數[:id])
      @評論=評論(:post=>@post)

      顯示注釋表單與任何其他表單相同。將其放在帖子控制器中顯示操作的視圖底部。

      06

      of 07

      顯示注釋

      最后一步是實際顯示評論。顯示用戶輸入數據時必須小心,因為用戶可能會嘗試插入可能破壞頁面的HTML標簽。為防止這種情況,使用h方法。此方法將逃脫用戶嘗試輸入的任何HTML標簽。在進一步的迭代中,可以應用諸如紅布或過濾方法的標記語言以允許用戶發布某些HTML標簽。

      評論將顯示為部分,就像帖子一樣。創建一個名為233 app/views/posts的文件/_comment.html.erb并將以下文本放入其中。它將顯示注釋,如果用戶登錄并可以刪除注釋,還將顯示銷毀鏈接以銷毀注釋。


      說:
      :確認=>'你確定嗎?',
      :方法=>:如果登錄則刪除?%>

      最后,要一次顯示所有的帖子's注釋,請使用調用注釋部分:collection=>@發布。對于屬于帖子的每個評論,這將稱評論為部分評論。將以下行添加到帖子控制器中的顯示視圖中。

      '評論',:集合=>@發布%>

      一個是完成,一個功能齊全的評論系統被實現。

      07

      257 of 07 258

      261>Next迭代

      在下一個教程迭代中,簡單的U格式將被稱為紅布的更復雜的格式引擎取代。RedCloth允許用戶使用簡單的標記創建內容,例如*粗體*,斜體為斜體。這將適用于博客海報和評論者。

      丁香五月啪啪 中文字幕|久久久久亚洲女同一区二区|久久综合激激的五月天|国产精品成年片在线观看
      <code id="nlfbz"><dd id="nlfbz"></dd></code>

    2. <table id="nlfbz"><option id="nlfbz"></option></table>
        <output id="nlfbz"><strong id="nlfbz"><small id="nlfbz"></small></strong></output>