我有一个深嵌套的部分视图,在其中迭代@users的集合。控制器定义的@users如下:
class UsersController < ApplicationController
def following
@users = @user.followed_users
..
end在部分模板中,我遍历集合,但我从不将集合的个体定义为实例变量,而是将局部变量与:object一起传递。
<% if current_user.following?(user) %>
<%= render partial: 'unfollow', object: user, as: :user %>
<% else %>
<%= render partial: 'follow', object: user, as: :user %>
<% end %>问题是..。
例如,在处理create.js.erb后续操作的文件中,我使用了以下代码:
$('#follow_form').html("<%=j render partial: 'users/unfollow', object: user, as: :user %>");这给出了我的开发日志中的以下错误:
ActionView::Template::Error (用于#<#:0x007fa17b9e57e0>的未定义局部变量或方法“`user”):
我是否在jQuery中声明了部分错误?我是否必须在其他地方定义user,比如在控制器中?如果是,如何将集合的单个定义为实例变量
提前感谢!
编辑:包含关联控制器
下面是处理请求的关联控制器:
class RelationshipsController < ApplicationController
def create
debugger
@user = User.find(params[:relationship][:followed_id])
current_user.follow!(@user)
respond_to do |format|
format.html { redirect_to @user }
format.js
end
end发布于 2012-03-18 18:16:48
@Dipil帮助我解决了将局部变量user替换为控制器中的实例变量@user集的简单解决方案。这件事很好用。
在一些小重构之后的最终输出:
$("#follow_form").html("<%=j render partial: 'users/unfollow', locals: { user: @user } %>");https://stackoverflow.com/questions/9755256
复制相似问题