Jquery 我的Rails应用程序中未定义的局部变量或方法,但在应用程序首次加载时识别
我正在尝试在我的Rails应用程序中使用replaceWith/html jQuery函数 My review_main.html.erb具有以下DOM结构:Jquery 我的Rails应用程序中未定义的局部变量或方法,但在应用程序首次加载时识别,jquery,ruby-on-rails,Jquery,Ruby On Rails,我正在尝试在我的Rails应用程序中使用replaceWith/html jQuery函数 My review_main.html.erb具有以下DOM结构: <div class="left_window"></div> <div class="right_window"></div> My edit.html.erb具有以下功能: <div class="edit_review_form"> <div class="
<div class="left_window"></div>
<div class="right_window"></div>
My 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>
<div class = "right_window">
<%= link_to I18n.t('user.review.edit.edit'), edit_review_path(review), :remote => true, :class => "edit_review_link" %>
<% end %>
</div>
我从我的review_main.html.erb调用edit.js.erb,如下所示:
<div class="breadcrumb" id="review_<%= review.id %>">
<div class="left_window"></div>
<div class="right_window"></div>
</div>
<div class = "right_window">
<%= link_to I18n.t('user.review.edit.edit'), edit_review_path(review), :remote => true, :class => "edit_review_link" %>
<% end %>
</div>
true,:class=>edit\u review\u link%%>
在edit.js.erb文件中,我有:
$('#review_<%=@review.id%>').html("<%= escape_javascript(render 'edit') %>")
$('#review_<%=@review.id %>').animate({height:'250px'}, 300);
$('#review_<%=@review.id%>').html("<%= escape_javascript( render 'review_main' ) %>")
$('#review').html(“”)
$('#review'')。动画({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>
在my_edit.html.erb中,我有一个“Cancel”链接,应该会再次加载\u review_main.html.erb
取消被称为类似于:
<%= link_to I18n.t('user.review.edit.cancel'), review_path(@review), :remote => true %>
true%>
在show.js.erb文件中,我有:
$('#review_<%=@review.id%>').html("<%= escape_javascript(render 'edit') %>")
$('#review_<%=@review.id %>').animate({height:'250px'}, 300);
$('#review_<%=@review.id%>').html("<%= escape_javascript( render 'review_main' ) %>")
$('#review').html(“”)
但是新的信息没有呈现出来。未确认审查内容中的任何内容。在控制台中,我可以看到:
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):
GEThttp://localhost:3000/reviews/51 500(内部服务器错误)
和
评论中的名称错误#显示
显示/home/mycompaq/myapp/app/views/reviews/_review_main.html.erb,其中第8行出现:
未定义的局部变量或方法“review”#
提取的源(第8行附近):
在第一次加载review_main.html.erb时,我没有收到任何错误,所以我只是不明白为什么现在会发生这种情况。谢谢您的帮助。将
编辑查看路径(review)
更改为编辑查看路径(@review |查看)
(因为在show action中,您有@review
对象,但没有查看
对象)。现在我得到一个“路由错误:没有路由匹配{:action=>“edit”,:controller=>“reviews”,:id=>#已使用review_块对其进行排序