我希望了解如何使用.js.erb file
通过使用Rails的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
吗?
答案 0 :(得分:1)
这是因为document
变量未定义。您需要传入控制器中找到的@document
或初始化js.erb文件中的document
。
编辑:
检查你的js.erb,在local
哈希中,你可以清楚地看到你传递document
变量,但它没有在任何地方定义。
答案 1 :(得分: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 }) %>")
&安培;它会起作用。