2015-01-31 2 views
0

.js.erb file을 사용하여 레일을 사용하여 Ajax 호출을 통해 변수를 전달할 수있는 방법을 찾고 있습니다. 순간부분 호출과 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 더 이상 액세스 할 수 없습니까?

는 어떤 도움을

감사

답변

1

document 변수가 정의되지 않은 때문입니다 감사. 컨트롤러에있는 @document을 전달하거나 js.erb 파일에서 document을 초기화해야합니다.

편집 : local 해시에서 js.erb를 확인하면 document 변수를 전달하고 있음을 분명히 알 수 있지만 어디에도 정의되어 있지 않습니다.

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

&가 작동과 create.js.erb 변화

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

에서

+0

도움에 감사드립니다 ... 어떻게 로컬 해시에 액세스 할 수 있습니까? – Richlewis

+0

당신이 나를 오해했습니다. 'create.js.erb'를 체크했다면, 여러분은 다음과 같은 것을 작성했습니다 :><% = j render (부분 : '공유/문서/document_form', 지역 : {문서 : 문서})' '{document : document} '의 해쉬를 가진'locals'라는 매개 변수가 있습니다. 'local : {document : @document} '로 변경하면 코드가 정상이라면 모두 좋다. – Finks

+0

또 다른 팁, 당신은 이것을 다음과 같이 다시 쓸 수 있습니다 : '<% = j render 'shared/documents/document_form', document : @ document' %> – Finks

0

.

관련 문제