2011-08-30 95 views
1

這是一個問題。我有一個資源Project其中has_manyFeeds。當我在項目頁面上查看嵌套Feed的列表時,我有一個Delete按鈕用於從項目中刪除該Feed。它的工作原理與此語法:Ruby on Rails link_to:method =>:刪除語法

<%= link_to 'Delete', [feed.project, feed], :confirm => 'Are you sure?', :method => :delete %> 

但是,隨後引導到上市的所有飼料的頁面,我反而希望它重定向到項目頁面的用戶只是在。這是一個改變[feed.project, feed]還是別的東西?我不太清楚link_to的語法。

編輯: 在我feeds_controller.rb,我改變了重定向線:back

def destroy 
project = Project.find(params[:project_id]) 
@feed = project.feeds.find(params[:id]) 
@feed.destroy 
redirect_to :back 

respond_to do |format| 
    format.html { redirect_to :back } 
    format.xml { head :ok } 
end 
end 

回答

1

你必須看看控制器此資源。它應該在app/controllers/projects_controller之類的地方,其中應該有一個名爲destroy的動作。做重定向的代碼必須在那裏。你必須把下面的設置更改:

redirect_to project_feeds_url(project) 

這個

redirect_to :back 
+0

要銷燬的資源是Feed對象,因此我轉到了feeds_controller.rb並將重定向添加到了destroy方法中。這個錯誤是:'在這個動作中多次調用渲染和/或重定向。請注意,您只能調用渲染或重定向,並且每次最多隻能調用一次.' – Paul

+0

您可以將此操作的代碼添加到您的問題中。 –

+0

@Paul:這個錯誤意味着你可能假設'redirect_to'(和/或'render')返回控制器動作......實際上,你需要做這樣的事情:'redirect_to:back and return' (之後立即從方法返回)。 –

0

在控制器

def destroy 
    @project = Project.find(params[:project_id]) 
    @feed = @project.feeds.find(params[:id]) 
    @feed.destroy 
    redirect_to @project 
end 
+0

這樣做給了我一個'不能重定向到零'的錯誤!這將在我的feeds_controller正確?我點擊刪除按鈕時看到的頁面就像'http:// localhost:3000/projects/1'。它是否仍然是饋送控制器,因爲它是饋送對象? – Paul