2010-03-07 2 views
1

저는 레일을 처음 사용합니다. 내 레일 버전은 2.3.5입니다.파괴? 지우다? 무슨 일 이니? Rails 2.3.5

컨트롤러에서는 destroy 메소드가 정의되어 있으며 view에서 action :> "delete"를 사용하여 해당 메소드를 실행할 수 있습니다. 액션 이름이 메소드 이름과 같지 않아야합니까? 삭제가 파괴 된 이유는 무엇입니까?

다시 컨트롤러에서 레코드를 삭제하기 위해 destroy라는 메서드를 정의합니다. 보기에는 <%= link_to "remove", :action => 'destroy', :id => myrecord %>이 있습니다. 그러나 실제로는 결코 작동하지 않습니다. 삭제 링크를 누를 때마다 쇼보기로 리디렉션되어 레코드 내용을 표시합니다. 내 방법을 파괴 할 것을 확신입니다 :

def destroy 
    @myobject = MyObject.find(params[:id]) 
    @myobject.destroy 
    @redirect_to :action = 'index' 
end 

내가 remove_me 같은 뭔가 파괴에서 메소드 이름을 변경하고 뷰에 remove_me 할 작업의 이름을 변경하면 모든 것이 기대 작품으로.

위의 두 가지 이상한 문제에서 필자의 구성에는 까다로운 라우팅 설정이 없습니다.

결국 파괴와 삭제가 레일스에서 ​​신비한 키워드라는 것을 알 수 있습니다. 아무도 나에게 이것을 설명 할 수 있습니까?

+0

link_to에서 제공하는 링크 위로 마우스를 가져 가면 어디로 이동합니까? HTML에서 view-source를 사용하는 경우 상황에 따라 링크가 어떻게 다릅니 까? –

답변

1

아마 MyObject를 routes.rb의 리소스로 설정하십시오. 리소스는 동작 이름과 직접적으로 일치하지 않는 몇 가지 경로를 얻습니다. 리소스에 정의 된 경로와 일치하지 않는 작업 이름을 사용하면 작업의 이름에 직접 매핑되는 기본 경로가 생깁니다.

this link은 레일의 라우팅을 잘 설명합니다. "RESTful 라우팅"섹션을 살펴보십시오.

1

REST 라우팅을 사용하는 경우 destory는 삭제 방법 만 지원합니다. 이

link_to "remove", :action => 'destroy', :id => myrecord", :method => :delete 

추가와 같은 코드를 변경할 수 있습니다 방법 => : 교체 값이

1

을 "삭제", 이름이 "_method"와 숨겨진 입력을 추가합니다 레일을 모두 삭제 : 게시물 => 사실 : method => : post

관련 문제