gpt4 book ai didi

jquery - 使用 AJAX/Ruby on Rails 在部分模板中定义局部变量

转载 作者:行者123 更新时间:2023-12-01 06:02:35 27 4
gpt4 key购买 nike

我有一个深度嵌套的部分 View ,我在其中迭代 @users 的集合。 Controller 定义 @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 %>

问题是...

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

$('#follow_form').html("<%=j render partial: 'users/unfollow', object: user, as: :user %>");

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

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

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

提前致谢!

编辑:包括关联的 Controller

这是处理请求的关联 Controller :

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

最佳答案

@Dipil 帮助我找到了一个简单的解决方案,即用 Controller 中设置的实例变量 @user 替换局部变量 user 。这非常有效。

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

$("#follow_form").html("<%=j render partial: 'users/unfollow', locals: { user: @user } %>");

关于jquery - 使用 AJAX/Ruby on Rails 在部分模板中定义局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9755256/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com