2011-12-31 3 views
0

레일 3 앱이 있으며 컨트롤러에서 메서드를 활성화하는 데 버튼을 사용하려고합니다. 내 users_controller.rb에 내가button_to를 사용하여 컨트롤러에서 메서드를 활성화하는 방법

def follow 
    ... 
    ... 
end 

을 그리고 뷰 (사용자/show.html.erb)에서 나는 버튼이 메소드를 호출 할 것을 의미한다. 현재 나는 <%= button_to("Un-Follow", :controller=>"users", :action=> "follow") %>을 가지고 있습니다. 그러나 버튼을 클릭하면 다음 오류가 발생합니다 : No route matches [POST] "https://stackoverflow.com/users/5/follow" 이유가 무엇입니까?

이 문제를 해결하는 방법을 모르겠습니다.

EDIT : config/routes.rb를 수정하고 그 오류를 수정했습니다. 그러나 컨트롤러에서 여전히 오류가 발생합니다. nil id.

편집 : 모든 것이 정상적으로 작동합니다. 그러나 지금 버튼을 클릭하면 뷰가 연결되지 않는다고 표시됩니다. 그러나, 나는 그 방법을 부르고 싶다, 나는 새로운 시각을 원하지 않는다. 컨트롤러가 아닌 도우미가하는 것이 가장 좋을까요?

편집 : 마지막으로, 어떤 이유로, "따라 가기"버튼을 누르면 모든 것이 작동합니다. 그러나 "unfollow"버튼을 클릭하면 작동하지 않습니다.

+1

더 많은 코드를 표시하십시오. 또한 답을 수정하고 이미 수정 한 오류에 대한 설명을 삭제하십시오. –

+0

올바른 해결책을 원하거나 오류 메시지가 사라지 길 원합니까? 이 구현은 생각보다 훨씬 더 멀리 떨어져 있습니다. – drhenner

+1

@Planetpluto : 괜찮 으면,이 질문을 맡아서 내 대답 (당신이 받아 들였습니다)에 맞게 편집 해 드리겠습니다 :-) –

답변

2

컨트롤러 작업에 대한보기가 반드시 필요한 것은 아닙니다. 임의의 텍스트를 렌더링 할 수 있습니다.

def follow 
    ... 
    render :text => 'ok', :layout => false 
end 

보기를 렌더링하는 대신 다른 페이지로 리디렉션 할 수 있습니다.

def follow 
    ... 
    redirect_to :action => :index 
end 
+3

누군가가 그에게 올바른 방법보다는 오히려이를 올바르게 보여줄 필요가 있다고 생각합니다. 에러 메시지 – drhenner

관련 문제