gpt4 book ai didi

javascript - 如何将局部变量添加到 js.erb 文件中的渲染调用

转载 作者:行者123 更新时间:2023-11-30 15:02:16 24 4
gpt4 key购买 nike

我的 js.erb 文件从我的 Rails 5.0.4 应用程序远程调用。

<% if @admin_invitation.present? && @admin_invitation.valid? %>
<%my_view = j (render partial: "shared/invitation_card",:user => @admin_invitation.invited_id, :email => @admin_invitation.invited_email, :type => "admin" ) %>
$(".invites.admins .row").prepend("<%=my_view %>");
<% end %>

App.refresh( "<%= j(render 'shared/alerts') %>" );

当我对部分值进行硬编码时,它按预期工作,但是当我将它们作为本地值从这个 js.erb 文件中输入时,它们不会通过 (nil)。值得注意的是,我从非远程 haml View 渲染了部分,它工作得很好。

以下是我尝试过的渲染方式(我知道有些已经过时了,但只是为了检查完整性)

render partial: "shared/invitation_card", :locals=> { :email => "admin@gmail.com", :type => "admin" }
render partial: "shared/invitation_card", object: "admin@gmail.com", as: "email"
render partial: "shared/invitation_card", email: "admin@gmail.com", type:"admin"
render partial: "shared/invitation_card", locals: { email: "admin@gmail.com", type: "admin" }

还有其他人对从 rails 5 中的 js.erb 渲染 haml 部分有问题吗?

编辑:

这里是调用上面js.erb的controller方法

def create
if params[:invited_status] == "temporary_invitation_user"
result = CreateGroupInvitation.call(invitation_model: GroupFollowInvitation, group_id: params[:group_id], inviter: current_user, invited_email: params[:invited_email], notification: "created_group_follow_email_invitation")
else
result = CreateGroupInvitation.call(invitation_model: GroupFollowInvitation, group_id: params[:group_id], inviter: current_user, invited_id: params[:invited_id] , notification: "created_group_follow_invitation")
end

if result.success?
@invitation = result.invitation
@invited = params[:invited_id] == "null" ? params[:invited_email] : User.find(params[:invited_id])
flash.now[:success] = "Your follow invitation was sent"
else
if result.error_message.present?
flash.now[:info] = result.error_message
else
flash.now[:error] = "An error happend"
end
end

respond_to do |format|
format.js { render layout: false }
end
end

最佳答案

我找到了答案。其实很简单

render partial 'view' locals: {k1: v1, k2:v2} 不会给你一个本地散列。它只是定义局部变量 k1 和 k2 以在您的部分中使用。您不需要从“locals”哈希中提取它们。

render 'view' locals: {k1: v1, k2:v2} 确实为您提供了一个包含 k1, v2 的本地散列。在您提取它们之前,它们不会被定义。这种不一致让我失望了。我的代码已准备好让它们位于本地散列中。

关于javascript - 如何将局部变量添加到 js.erb 文件中的渲染调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46332868/

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