首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用AJAX / Rails在部分模板中定义局部变量

问使用AJAX / Rails在部分模板中定义局部变量
EN

Stack Overflow用户
提问于 2012-03-18 01:23:51
回答 1查看 1.5K关注 0票数 2

我有一个深嵌套的部分视图,在其中迭代@users的集合。控制器定义的@users如下:

代码语言:javascript
复制
class UsersController < ApplicationController

def following
  @users = @user.followed_users
  ..
end

在部分模板中,我遍历集合,但我从不将集合的个体定义为实例变量,而是将局部变量与:object一起传递。

代码语言:javascript
复制
<% if current_user.following?(user) %>
  <%= render partial: 'unfollow', object: user, as: :user %>
<% else %>
  <%= render partial: 'follow', object: user, as: :user %>
<% end %>

问题是..。

例如,在处理create.js.erb后续操作的文件中,我使用了以下代码:

代码语言:javascript
复制
$('#follow_form').html("<%=j render partial: 'users/unfollow', object: user, as: :user %>");

这给出了我的开发日志中的以下错误:

ActionView::Template::Error (用于#<#:0x007fa17b9e57e0>的未定义局部变量或方法“`user”):

我是否在jQuery中声明了部分错误?我是否必须在其他地方定义user,比如在控制器中?如果是,如何将集合的单个定义为实例变量

提前感谢!

编辑:包含关联控制器

下面是处理请求的关联控制器:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-18 18:16:48

@Dipil帮助我解决了将局部变量user替换为控制器中的实例变量@user集的简单解决方案。这件事很好用。

在一些小重构之后的最终输出:

代码语言:javascript
复制
$("#follow_form").html("<%=j render partial: 'users/unfollow', locals: { user: @user } %>");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9755256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档