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