我正在尝试在我的 Rails 应用程序中使用 replaceWith/html jQuery 函数。
我的 review_main.html.erb 有这个 DOM 结构:
<div class="left_window"></div>
<div class="right_window"></div>
我的 edit.html.erb 有这个:
<div class="edit_review_form">
<div class="cancel-edit" id="<%= @review.id %>"></div>
<div class="inputs"></div>
</div>
当我的应用加载时,review_main.html.erb 是这样调用的:
<!-- I need the 'breadcrumb div' to be outside of review_main, because it will help with my jQuery html/replaceWith -->
<div class="breadcrumb" id="review_<%= review.id %>">
<%= render 'reviews/review_main', :review => review %>
</div>
所以加载的 DOM 看起来像这样:
<div class="breadcrumb" id="review_<%= review.id %>">
<div class="left_window"></div>
<div class="right_window"></div>
</div>
我从我的 review_main.html.erb 中调用了一个 edit.js.erb,如下所示:
<div class = "right_window">
<%= link_to I18n.t('user.review.edit.edit'), edit_review_path(review), :remote => true, :class => "edit_review_link" %>
<% end %>
</div>
在 edit.js.erb 文件中我有:
$('#review_<%=@review.id%>').html("<%= escape_javascript(render 'edit') %>")
$('#review_<%=@review.id %>').animate({height:'250px'}, 300);
所以到这里一切都很好。DOM 结构更改为:
<div class="breadcrumb" id="review_<%= review.id %>">
<div class="edit_review_form">
<div class="cancel-edit" id="<%= @review.id %>"></div>
<div class="inputs"></div>
</div>
</div>
问题是将 DOM 改回:
<div class="breadcrumb" id="review_<%= review.id %>">
<div class="left_window"></div>
<div class="right_window"></div>
</div>
在我的 _edit.html.erb 中,我有一个“取消”链接,它应该再次加载 _review_main.html.erb。
取消被称为:
<%= link_to I18n.t('user.review.edit.cancel'), review_path(@review), :remote => true %>
在 show.js.erb 文件中,我有:
$('#review_<%=@review.id%>').html("<%= escape_javascript( render 'review_main' ) %>")
但是没有呈现新信息。review_main 中没有任何内容被识别。在控制台中我可以看到:
GET http://localhost:3000/reviews/51 500 (Internal Server Error)
and
NameError in Reviews#show
Showing /home/mycompaq/myapp/app/views/reviews/_review_main.html.erb where line #8 raised:
undefined local variable or method `review' for #<#<Class:0x7f2fe74a6c08>:0x7f2fe76ca048>
Extracted source (around line #8):
第一次加载 review_main.html.erb 时我没有收到任何错误,所以只是混淆了为什么现在会发生这种情况。谢谢你的帮助。