【发布时间】:2018-03-02 03:40:35
【问题描述】:
我的 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 视图渲染了部分视图,它工作得很好。
这是我尝试过的渲染方式(我知道有些已经过时,但只是为了进行完整性检查)
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的控制器方法。
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
【问题讨论】:
标签: javascript ruby-on-rails ruby ajax render