2014-01-05 2 views
1

У меня есть модель Article и контроллер articles.
index действие:Rails 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 странице, он бросает ошибку (все отлично работает локально)

ActionView :: Template :: Ошибка (неопределенный метод `имя» для ноль: NilClass) :

Так что же здесь происходит? Как работает ajax в рельсах? то, что я могу получить от вышеуказанной ошибки, заключается в том, что когда вызывается действие index (когда я нахожу его), он пытается определить переменную @article, которая равна nil, и в то же время она частично частичная. @article nil first time.The запрос будет сделан только после того, как я нажму ссылку и сделаю запрос ajax. Как рельсы знают, что это запрос ajax?

Что я делаю?

Спасибо за помощь.

UPDATE

Теперь попробовал несколько вещей, даже если я ничего не положить в index.js.erb в @articles переменных правильно отображаются в консоли.

+0

ваша функция клик не закрыта. – hawk

+0

@ hawk, который был опечаткой. :) –

ответ

0

Вы можете попробовать

Article.find(params[:id]) 

Если нет, проверьте, есть ли статья объект с идентификатором вы передаете

+0

yup. существует статья с этим id. Я просто явно передаю хэш-параметры, чтобы быть уверенным, что я делаю. Bet'n запрос корректно возвращается в консоль, и когда я просматриваю html, шаблон '_article.html.erb' отображается правильно. Он просто не отображается на странице браузера. и вообще не работает на Хереку. –

+0

@whoIsCraig try <% = render "article",: locals => {: article => @article}%> и <% = article.name%> – arun15thmay

+0

Теперь я получаю ту же ошибку, что и в герою. 'undefined method' name 'для nil: NilClass' –

Смежные вопросы