2015-01-31 3 views
0

Я ищу, чтобы узнать, как передать переменную через вызов Ajax с помощью рельсов, используя .js.erb file.Передача переменной через частичный вызов и Ajax

В данный момент я заявляю это, на мой взгляд

<% document = @documents.select { |d| d.skill_id == s.id } %> 

<div class="doc_upload"> 
    <%= render partial: 'shared/documents/document_form', locals: { document: document } %> 
</div> 

общий/документы/document_form

<% if document %> 
    <% document.each do |doc| %> 
    <%= doc %> 
    <% end %> 
    <%= render template: '/documents/new' %> 
<% else %> 
    <%= render template: '/documents/new' %> 
<% end %> 

Так что, когда я создаю новый документ, я обработки его вызова Ajax

create.js.erb

$('.doc_upload').html("<%= j render(partial: 'shared/documents/document_form', locals: { document: document }) %>") 

Однако я получаю undefined local variable or method document'`

Есть ли причина, по которой я не могу получить доступ document?

Любая помощь приветствуется

Благодаря

ответ

1

Это потому, что document переменная не определена. Вам нужно либо пройти в @document, найденном в контроллере, либо инициализировать document в файле js.erb.

Редактировать: проверить ваш js.erb, в хэш-файле local, вы можете ясно видеть, что вы передаете переменную document, но она не определена нигде.

+0

спасибо за помощь ... как я могу получить доступ к локальному хешу? – Richlewis

+0

вы меня неправильно поняли. Если вы проверите свой файл 'create.js.erb', вы написали что-то вроде этого:> Finks

+0

Еще один совет, вы можете перефразировать это примерно так: '<% = j render 'shared/documents/document_form', document: @ document'%> – Finks

0

в изменении create.js.erb

$('.doc_upload').html("<%= j render(partial: 'shared/documents/document_form', locals: { document: document }) %>") 

с

$('.doc_upload').html("<%= j render(partial: 'shared/documents/document_form', locals: { document: @document }) %>") 

& он будет работать.

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