0

我正在尝试在我的 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 时我没有收到任何错误,所以只是混淆了为什么现在会发生这种情况。谢谢你的帮助。

4

0 回答 0