2013-06-26 1 views
0

입력란 중 하나를 클릭 할 때마다 계속 저장하는 레일 앱이 있습니다./posts/new에서 시작합니다. 무언가를 작성하고 입력을 클릭하면 양식이 아약스를 통해 제출됩니다./posts/new의 양식 속성은/post/1/edit의 양식 속성으로 변경됩니다 (1은 임의의 숫자가 될 수 있음). 그리고 url은/post/1/edit에 대한 업데이트입니다 (다시 말하면 1은 임의의 숫자 일 수 있습니다). 양식이/후/1/편집으로 다시 제출 및 업데이트 양식 속성, 나는 다음과 같은 오류 얻을레일스 아약스 양식 작업 다시 쓰기 경로 오류

: 구글 크롬 콘솔에서

No route matches [POST] "/posts/4" 

을, 나는 다음과 같은 오류가 발생합니다 :

POST http://0.0.0.0:3000/posts/1 404 (Not Found) 

여기 내 코드입니다.

/app/asset/javascripts/posts.js

$(document).ready(function() { 
    $('.new_post').on('focusout', function(ev) { 
    $('.new_post').submit(); 
    }); 

    $('.edit_post').on('focusout', function(ev) { 
    $('.edit_post').submit(); 
    }); 
}); 

/app/controllers/post_controller.rb, /app/models/post.rb 및 /config/routes.rb 컨트롤러 모델이다 게시물의 비계에서 생성 된 경로. 또한

<%= form_for(@post, :remote => true) do |f| %> 
    <% if @post.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@post.errors.count, "error") %> prohibited this post from being saved:</h2> 

     <ul> 
     <% @post.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

    <div class="field"> 
    <%= f.label :title %><br /> 
    <%= f.text_field :title %> 
    </div> 
    <div class="field"> 
    <%= f.label :description %><br /> 
    <%= f.text_area :description %> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

응용 프로그램/뷰/글/_form.html.erb, 몇 가지 더.

1)/post/1/edit로 가면 편집하고 입력란을 클릭하십시오. 라우팅 오류가 없습니다.

2) 포스트/1/편집 페이지의 생성 된 html과 폼 액션에 대한 포스트/아약스 업데이트 후에 생성 된 html은 동일합니다.

도움을 주시면 감사하겠습니다.

감사합니다.

답변

1

업데이트하려면 PUT을 수행해야하며 코드는 _method : PUT을 포함하지 않으면 POST 요청을 처리하므로 인식 된 경로가 아닙니다.

+0

나는 그 해결책을 시도해 보았지만 그것을 잘못 구현 했음에 틀림 없다. 왜냐하면 그 방법을 바꾸는 것이 효과가 있었기 때문이다. 감사합니다. – user2517182

관련 문제