2012-10-03 48 views
0

我有一個Post模型,它有標題,正文&作者。我想啓用一個功能,在每當用戶嘗試刪除帖子時,它應該詢問帖子的作者名,並且如果指定的作者姓名與post.author相同,則他/她可以刪除帖子,否則它不應該刪除帖子。如何在rails中修改js:delete操作

請引導我完成我需要遵循的步驟。我試圖創建一個author_destroy操作,但它失敗,因爲它無法在Post索引中找到該操作。

注:我使用author字段作爲User模型的替代品。

+0

你怎麼定義你的路線?你只使用'resources:posts'嗎? – MilkyWayJoe

+0

'resources:posts do resources:comments end' – Clone

+0

簡單地用'resources'設置路線不會使這個動作可用。閱讀更多關於['routes'&'resources' here](http://guides.rubyonrails.org/routing.html) – MilkyWayJoe

回答

1

首先,我建議只顯示刪除功能的帖子的作者,以及隱藏其所有其他用戶的,一些在再培訓局,如:

<% if @user == post.author %> 
<%= link_to "delete", post, :method => :delete, :confirm => "You sure?", 
          :title => "Delete #{post.title}" %> 
<% endif %> 

然後在銷燬行動帖子控制器:

def destroy 
    Post.find(params[:id]).destroy if @user == post.author 
    redirect_to posts_path 
end 
+0

我仍然會檢查(通過授權)當前用戶是否被允許調用'destroy'動作在服務器上,因爲它可以發送一個有效的請求,該方法,如果你知道路由和發帖ID – MilkyWayJoe

+0

做了一個驗證的簡單例子,你可以做MWJ建議 –

+0

如果我添加這個東西,我得到一個錯誤'語法錯誤,意想不到的keyword_ensure,在索引中期待keyword_end'。這裏有沒有'結局'? – Clone