[053]Ruby on Rails學習筆記(6) -重構、刪除留言、安全

7.重構

app/views/comments/_comment.html.erb

app/views/comments/_form.html.erb

兩行程式碼,

前者代表:顯示comment部分:

Comments

<%= render @article.comments %>

後者代表:add comment

Add a comment:

<%= render 'comments/form' %>

comments/form代表comment folder 路徑下的file

最後就完成,render的重構


8.刪除留言

在實作時,這邊一直出現bug,原因在於我一直在view/article/show.html.erb做,

但是真正的要在view/comments/_comment.html.erb裡做

要打入以下這行

<%= link_to 'Destroy Comment', [comment.article, comment],

method: :delete,

data: { confirm: 'Are you sure?' } %>

與article的刪除有差別

<%= link_to 'Destroy', article_path(article), method: :delete,data:{confirm:'Are u sure?' } %>

差別在於[comment.article, comment] 與 article_path(article),

前者點擊新增的 "Destroy Comment" 連結將會送出一個DELETE /articles/:article_id/comments/:id的請求到CommentsController,而 controller 可以透過這個請求找到我們想刪除的留言。

所以,接著要去CommentController中,增加action :destroy

def destroy

     @article=Article.find(params[:article_id])

     @comment= @article.comment.find(params[:id])

      redirect_to  article_path(@article)

end


跟action create差別

@[email protected](comment_params)

@[email protected](params[:id])

一個是用create且comment_paeams,

一個是用find且params[:id]

最後,再刪除一篇文章後,留言也會不見,所以得在model中,加入這行

has_many:comments, dependent::destroy

已清除留言佔資料的時間!


9.安全

目的是讓輸入者不輕易刪除文章或者進入編輯的畫面,

總結來說,可以設一個機制來控制,destroy,show,index,edit等

在controller加上這些代碼:

http_basic_authenticate_with name:"dhh", password:"secret",

except: [:index,:show]

順帶一提,網路上有很多認證的套件,像是Devise(目前我們使用),

總結來說,實做文章、留言板表單,原本覺得很複雜,但一步步拆解後,其實覺得並不難,需要時間投入,

與耐心,最後,附上自己的實作檔案在github上,

以便往後有機會可以查看。

https://github.com/YenKang/Ruby_on_rails-Blog

你可能感兴趣的:([053]Ruby on Rails學習筆記(6) -重構、刪除留言、安全)