gpt4 book ai didi

javascript - 帮助通过 ror 通过 ajax 执行 javascript

转载 作者:行者123 更新时间:2023-11-29 14:44:26 25 4
gpt4 key购买 nike

我对 Ruby on Rails 还很陌生,需要一些帮助来构建和执行 Ajax 代码。

目前我的网络应用程序有一个邀请功能,但效果不太好。我将在一分钟内分享代码,但这可能有助于描述我当前拥有的内容以及我正在尝试执行的操作。因此,目前招工方式如下:

有 2 个按钮可邀请人们访问用户创建的页面。一个按钮适用于尚未在该网站上注册的用户,另一个按钮适用于已在该网站上注册的用户。当前的设置要求邀请人的用户知道他们邀请的人是否是注册用户(正如您所知,这是一个相当大的缺陷)。代码如下:

此代码位于执行ajax的 View 中(顺便说一句,我正在使用HAML,如果需要,可以发布更多代码):

.invitepeople_buttons
= button_to_function 'Add Existing User', 'insert_add_existing_member_form()', :class => "submit"
= button_to_function 'Add New User', 'insert_invitation_membership_form()', :class => "floatright submit"

此代码位于 application.js 文件中:

var insert_invitation_membership_form = function(){
$('#membership_form_footer').before("<h2>Add New User</h2>")
var template = $("#invitation_membership_form").clone()
$("#membership_form_footer").before( template.html().replace(/new_membership/g, new Date().getTime()) )
}

var insert_add_existing_member_form = function(){
$('#membership_form_footer').before("<h2>Add Existing User</h2>")
var template = $("#add_existing_member_form").clone()
$("#membership_form_footer").before( template.html() )
$('.existing_member_autocomplete').autocomplete({
source: users_for_autocomplete,
select: function(event, ui){
insert_membership_form(ui.item)
}
})
}

这是我想要实现的:我想创建一个文本字段和一个具有新功能的按钮。用户可以在新的文本字段中输入他们想要邀请的人的电子邮件,然后单击新按钮。

这个新按钮将触发一个新函数:新函数会将文本字段中的电子邮件与注册用户的电子邮件进行比较(可能使用 where sql 函数),并取决于是否用户退出(即:文本框中的电子邮件匹配和数据库中的电子邮件)它将通过 if 语句执行已经存在的函数之一。

不幸的是,我不知道如何正确地实现这一点。这是我目前所拥有的,但它不起作用:

在 View 中:

.invitepeople_buttons

= text_field "member_email", ""
= button_to_function 'Add Member', 'test_email_for_membership()', :class => "submit"

在 application.js 中:

var test_email_for_membership = function(){
if user.where(:email => member_email).exists? = true
$('#membership_form_footer').before("<h2>Add Existing User</h2>")
var template = $("#add_existing_member_form").clone()
$("#membership_form_footer").before( template.html() )
$('.existing_member_autocomplete').autocomplete({
source: users_for_autocomplete,
select: function(event, ui){
insert_membership_form(ui.item)
}
})
else
$('#membership_form_footer').before("<h2>Add New User</h2>")
var template = $("#invitation_membership_form").clone()
$("#membership_form_footer").before( template.html().replace(/new_membership/g, new Date().getTime()) )
}

任何帮助将不胜感激。我很感谢您花时间阅读我的问题,如果您需要澄清任何事情(我知道我可能没有足够详细地解释它),请随时询问!再次感谢您!

最佳答案

看起来您正在 application.js 中混合 Rails 代码,这是不行的。
您应该向 Controller 触发 Ajax 请求(使用 jQuery.ajax 即可轻松完成),以检查用户是否已存在,然后根据您的响应执行您选择的函数。

您应该使用 respond_to block 为 JS 请求准备 Controller 。可能的解决方案:

respond_to do |format|
format.js do
if User.where('email = ?', params[:email]).first
render :text => "true"
else
render :text => "false"
end
end
end

您还应该检查 Unobtrusive JavaScript Railscast .

关于javascript - 帮助通过 ror 通过 ajax 执行 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7277384/

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