나는 Article
모델과 articles
컨트롤러를 가지고 있습니다.
index
조치 :레일 AJAX PUT 메서드가 작동하지 않고 Heroku 오류
def index
@article=Article.find(id: params[:id])
respond_to do |format|
format.html
format.js
end
end
index.html.erb
<a href="" id="find">Find Article</a>
<div id="article">
<%= render @article %>
</div>
$('#find').click(function(){
$.ajax({
type: "PUT",
data: {id: id},
url: "/index"
});
});
index.js.erb
$('#article').update("<%=escape_javascript(render(@article))%>");
_article.html.erb
<p><%= @article.name %></p>
routes.rb
get '/index', to: "articles#index"
put '/index', to: "articles#index"
그러나 아무것도 부분에 표시된다. p 태그가 비어 있습니다. 로그에 오류가 없습니다. 쿼리와 일치하는 레코드가 없으면 nil
오류가 발생한다고 가정 해 보겠습니다.
에게 Heroku에 또한 나는 index
페이지로 이동이 오류가 발생합니다 (전무에 대한 정의되지 않은 메서드`이름 'NilClass)
ActionView :: 템플릿 :: 오류 (모든 로컬 잘 작동) :
그래서 무엇이 발생하고 있습니까? 레일에서 아약스는 어떻게 작동합니까? 위의 오류에서 얻을 수있는 것은 index
동작이 호출 될 때 (방문 할 때) nil
인 변수 @article
을 확인하려고 시도하고 동시에 _article.html.erb
부분을 렌더링합니다 .Definately @article
은 처음입니다. 시간은 쿼리가 링크를 클릭하고 아약스 요청을 한 후에 만들어 질 것입니다. 레일스가 아약스 요청임을 어떻게 알 수 있습니까?
내가 뭘 잘못 했니? 도움을
감사합니다.
UPDATE 지금, 내가 콘솔에서 제대로 렌더링되는 index.js.erb
@articles
변수에 아무것도 넣지 않는 경우에도 몇 가지를 시도했다.
당신의 클릭 기능이 제대로 닫혀 있지 전달하는 ID로 기사 개체가 있는지 확인
를 시도 할 수 있습니다. – hawk@hawk 이는 오타였습니다. :) –