2011-08-30 4 views
1

이것은 중요한 문제입니다. 나는 Projecthas_manyFeeds 인 자원을 가지고있다. 프로젝트 페이지에서 중첩 된 피드 목록을 볼 때 해당 피드를 프로젝트에서 제거하려면 Delete 단추가 있습니다.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에서 , 나는 컨트롤러

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

답변

1

을에 :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 
+0

파괴 할 리소스가 Feed 개체이므로 feeds_controller.rb에 가서 destroy 메서드에 리디렉션을 추가했습니다. 이 오류로 인해 '렌더링 및/또는 리디렉션이이 작업에서 여러 번 호출되었습니다. 렌더링 또는 리디렉션 만 호출 할 수 있으며 동작마다 한 번만 호출 할 수 있습니다. ' – Paul

+0

이 작업의 코드를 질문에 추가 할 수 있습니까? –

+0

@Paul :이 에러는 여러분이 아마도'redirect_to' (그리고/또는'render')가 컨트롤러 액션에서 돌아올 것이라고 가정하고 있음을 의미합니다. 실제로, 당신은'redirect_to : back and return'과 같은 것을 할 필요가 있습니다. (메서드에서 바로 반환하기 위해). –

0

로 리디렉션 라인 변경이 자원에 대한 컨트롤러를 살펴 있어야합니다 . 그것은 어딘가에 app/controllers/projects_controller이어야하며, 여기에는 destroy이라는 작업이 있어야합니다. 리디렉션을 수행하는 코드가 있어야합니다. !이 나에게`전무로 리디렉션 할 수 없습니다 '오류를 제공 수행이

redirect_to :back 
+0

redirect_to project_feeds_url(project) 

: 당신은 다음 줄을 변경해야합니다. 이건 내 feeds_controller 올바른 것인가? 삭제 버튼을 클릭했을 때보고있는 페이지는'http : // localhost : 3000/projects/1'과 같습니다. 피드 개체이기 때문에 여전히 피드 컨트롤러입니까? – Paul