У меня есть модель 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
переменных правильно отображаются в консоли.
ваша функция клик не закрыта. – hawk
@ hawk, который был опечаткой. :) –