Rails 4 Ajax NoMethodError - неопределенный метод `id' для nil:NilClass: в моем файле create.js.erb

Я пытаюсь отобразить частичное нажатие кнопки. Я считаю, что делаю что-то явно неправильное... и я ожидаю, что это не будет в следующем:

$('#modrequest').empty();
$('#modrequest').html("<%= escape_javascript(render(:partial => 'moderator_requests/links')).html_safe %>");

Ошибка

NoMethodError - неопределенный метод `id' для nil:NilClass:

Я ожидаю, что где-то делаю что-то не так, но я не уверен, где именно, поэтому вместо того, чтобы публиковать тонну кода, я опубликую любой запрошенный файл.

Спасибо


person David Sigley    schedule 19.06.2014    source источник
comment
вы получаете эту ошибку после вызова ajax? Можете ли вы опубликовать свой метод ajax и частичный рендеринг   -  person Mandeep    schedule 19.06.2014


Ответы (1)


Ошибка

Ошибка, скорее всего, будет результатом того, что вы вызовете неустановленные данные в своем partial:

#partial
<%= item.id %>

--

Исправить

Поскольку вам нужно передать локальные переменные в ваши частичные файлы, вы не передавая any - что не позволит ему вызывать нужные ему данные. Вы сможете решить проблему следующим образом:

$('#modrequest').html("<%=j render(:partial => 'moderator_requests/links', locals: {your: "local"}).html_safe %>");

Если ваши данные не могут быть переданы в ваш партиал, вам будет гораздо лучше поместить их в helper, что позволит вам заполнить его в любой части вашего приложения.

--

Определение

NoMethodError - неопределенный метод `id' для nil:NilClass

Эта ошибка в основном означает, что вы пытаетесь вызвать id для несуществующего фрагмента данных. Вам нужно либо показать частичное, либо определить, какие данные вы пытаетесь вызвать в частичном

Чтобы исправить это, вам в основном нужно иметь возможность передавать правильные данные в ваш частичный; либо с помощью local переменных, либо с помощью helper

person Richard Peck    schedule 19.06.2014
comment
Блестяще, это прекрасно, спасибо. Я смог передать информацию как локальные вары частичному. Ради интереса, в какой момент вы бы подумали о переходе на вспомогательный метод? Моему частичному требовался только идентификатор объекта, так что это не было большой проблемой, но я хотел бы иметь возможность использовать и для этого вспомогательные методы. - person David Sigley; 19.06.2014
comment
Я бы использовал помощника, если бы вам нужно было использовать те же данные в других частях приложения. Хорошим примером может быть использование панели nav (если вы вызываете данные из базы данных по всему приложению для панели навигации) - person Richard Peck; 19.06.2014
comment
Хорошо, это логично, еще раз спасибо! - person David Sigley; 19.06.2014