2012-02-09 3 views
3

안녕하세요, 저는 이것에 대해 여러 게시물을 보았습니다. 그러나 여전히 method => 'delete'를 호출하고 내 컨트롤러의 show 메소드로 이동하는 것과 관련된 문제가 있습니다. destroy 메소드는 주석을 삭제한다는 점에서 expect로 작동하지만 요청이 완료되면 GET에 404를 발생시킵니다. 여기레일 3 link_to destory 메소드 호출 삭제 show method?

<%= link_to 'delete', "/events/#{@event.id}/comments/#{comment.id}.js", 
     :confirm => 'Are you sure?', 
     :method => :delete, 
     :remote => true %> 

컨트롤러 방법 : 다음은 코드가 나는이 button_to를 사용하지 않는 때문에 될 수 있다고 듣고했습니다

def destroy 
    @comment = @event.comments.find(params[:id]) 
    @comment.destroy 
    redirect_to do |format| 
    format.html # redirect_to @event, :notice => "comment deleted" } 
    format.js { render 'destroy.js.erb' } 
    end 
end 

,하지만 난 LINK_TO 반대로 button_to 사용하여 시도했지만 이것은 똑같은 일을합니다.

또한 jquery를 설정하는 데있어 몇 가지 문제가있을 수 있다고 들었지만 의심 스럽지만 여기서는 jquery를 호출하는 방법이 있습니다 (응용 프로그램 .html.erb) :

<%= javascript_include_tag 'jquery-1.5.2.min.js', 'rails', 'application' %> 
    <%= javascript_include_tag 'jquery-ui-1.8.17.custom.min.js' %> 

내가 볼

말한다 나는 그것이 있다고보고 서버 출력 레일 : 도움을

Redirected to http://0.0.0.0:3000/events/1/comments/35 
Completed 302 Found in 132ms 
ACTION NAME application 


Started GET "/events/1/comments/35" for 127.0.0.1 at Wed Feb 08 16:31:43 -0800 2012 

AbstractController::ActionNotFound (The action 'show' could not be found for CommentsController): 

감사합니다!

+0

destroy.js.erb에는 무엇이 있습니까? – Nick

+0

$ ("# # % dom_id (@comment) %>"). remove() 그러나이 문제에 대해서는 주석을 달았으며 여전히 같은 문제가 있습니다. – botbot

+0

대답은 ajax 삭제 요청을 할 때 redirect_to를 사용할 수 없다는 것입니다. 그러면 리소스가 없어지기 때문에 다른 요청을 보내고 404에서 끝납니다. – botbot

답변

0

귀하의 앱에 적절한 버전의 rails.js가 있는지 확인하겠습니다. rails.js는 삭제 링크가 실제로 delete 메소드를 사용하는지 확인하기 위해 처리되므로, rails.js 파일을 업데이트해야 할 수도 있습니다. 어떤 레일 버전을 실행하고 있습니까?

+0

레일 3.1.0. 나는 레일스 .js를 최신 것으로 바꿉니다. 내 응용 프로그램이 실제로 새로운 Rails 3.1.0 환경으로 끌어온 Rails 3.0 응용 프로그램 이었기 때문에 레일즈 .js가 최신 버전이 아닐 수도 있다고 생각했습니다. 여전히 같은 결과를 얻고 있습니다. 삭제가 진행되고 있지만 컨트롤러의 새 메서드로의 리디렉션이 아직 수행 중입니다. – botbot

+0

삭제가 끝나면 JS가 문제가되지 않습니다. '형식을 꺼내보십시오.html' 행을 살펴보고 도움이되는지 확인하십시오. 또는 최소한'format.js' 줄을 먼저 넣으십시오. – siannopollo

+0

안녕하세요, siannopollo, 저의 제안에 감사드립니다. format.html 줄을 주석 처리했지만 여전히 뭔가를 얻으려고합니다. 나는 내가 뭔가를 놓치고 있다고 생각한다. 나는 그것이 어떤 이유로 쇼 방법으로 방향을 바꾸고 있다고 생각한다. 나는 파기를 계속할 것이다. – botbot

0

config/routes.rb 파일에 문제가있을 수 있습니다. routes.rb 파일의 이전 항목이 events/:id/comments/:id과 일치하고 comments#show을 가리키는 경우이 오류가 발생할 수 있습니다.

0

format.html이 원인 일 수 있습니다. 이 줄을 으로 변경하십시오. format.html { render :nothing => true }

1

레일 3.1 이상은 이것을 정리합니다 ... rails.js는 없어졌습니다. Jquery_ujs는 보석의 일부이지만 파일은 자바 스크립트 디렉토리에 있으면 안됩니다 : 특히 내 jquery_ujs 파일은 내 자산/javascript 디렉토리에서 오래된 "살아있는"파일이었습니다. .live 메소드는 여전히 사용되지 않으며 더 이상 사용되지 않습니다. 파일을 삭제하십시오 !!
jquery-rails ','~> 2.1 REF : https://github.com/rails/jquery-ujs jquery를 // 필요로하고 // jquery_ujs 및 // = require_tree가 필요합니다. application.js 파일에서 gem 및 번들 설치를 업데이트하여 최신 gem을 얻으십시오. "나를 비웃는"경우처럼 자바 스크립트 오류가 발생하면 나머지 link_to j는 작동하지 않습니다. 이제 삭제 및 확인 대화 상자가 올바르게 작동합니다. 오래된 jquery_ujs가 범인이었습니다.

관련 문제