2014-01-05 1 views
1

나는 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 변수에 아무것도 넣지 않는 경우에도 몇 가지를 시도했다.

+0

당신의 클릭 기능이 제대로 닫혀 있지 전달하는 ID로 기사 개체가 있는지 확인

Article.find(params[:id]) 

를 시도 할 수 있습니다. – hawk

+0

@hawk 이는 오타였습니다. :) –

답변

0

당신이하지 않으면 당신이

+0

예. 이드가있는 기사가 있습니다. 나는 명시 적으로 해시 매개 변수를 전달하여 내가하는 일을 확실히 알 수 있습니다. Bet'n 쿼리가 콘솔에서 올바르게 반환되고 거기에서 html을 볼 때'_article.html.erb' 템플릿이 제대로 렌더링됩니다. 브라우저 페이지에는 표시되지 않습니다. 헤로 쿠에서 전혀 작동하지 않습니다. –

+0

@whoIsCraig try <% = render "article", : 지역 : => {article => @article} %> 및 <% = article.name %> – arun15thmay

+0

이제 영웅과 같은 오류가 발생합니다. '정의되지 않은 메서드'name 'for nil : NilClass' –

관련 문제