![](/img/trans.png)
[英]updating a div partial in rails after submitting form via javascript
[英]Rails Error submitting partial via Javascript
我的控制器中有以下代码:
文件:app / controllers / photos_controller.rb
def show_snapshot_comments
snapshot = Snapshot.find(params[:id])
@photo = snapshot.photo
comments = snapshot.comments.paginate :page => params[:page]
@snapshot_comment = snapshot.comments.new
respond_to do |format|
format.js
end
end
JavaScript(jQuery):文件:app / views / photos / show_snapshot_comments.js.erb
$j('#info').append("<%= escape_javascript(render :partial => "snapshot_comments",
:locals => {:snapshot => snapshot, :comments => comments}) %>" );
show_snapshot_copmments从以下位置调用:app / views / photos / show.html.erb
它似乎不起作用。
我的错误:
渲染照片/ show_snapshot_comments
ActionView::TemplateError (undefined local variable or method `snapshot' for #<ActionView::Base:0x2aaaaea473c8>) on line #2 of app/views/photos/show_snapshot_comments.js.erb:
1: $j('#info').append("<%= escape_javascript(render :partial => "snapshot_comments",
2: :locals => {:snapshot => snapshot, :comments => comments}) %>" );
app/views/photos/show_snapshot_comments.js.erb:2
app/controllers/photos_controller.rb:227:in `show_snapshot_comments'
任何想法可能会发生什么?
您正在尝试将局部变量传递给部分“ snapshot_comments”。但是,这两个局部变量(快照和注释)未在当前作用域(在视图中)中定义。
如果要将变量从控制器传递到视图,则必须执行以下操作:
def show_snapshot_comments
@snapshot = Snapshot.find(params[:id])
@photo = snapshot.photo
@comments = snapshot.comments.paginate :page => params[:page]
@snapshot_comment = snapshot.comments.new
respond_to do |format|
format.js
end
end
$j('#info').append("<%= escape_javascript(render :partial => "snapshot_comments",
:locals => {:snapshot => @snapshot, :comments => @comments}) %>" );
尝试上面的代码,看看是否可行。 我只是将快照和注释更改为@snapshot和@comments。
快照在控制器中设置为局部变量,因此模板看不到它。 将其设置为实例变量:
@snapshot = Snapshot.find(params[:id])
然后在模板中:
:locals => {:snapshot => @snapshot
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.