Мне сложно разобраться в сложном вопросе. Вот чего я пытаюсь достичь:
Я хотел бы иметь text_field
, где пользователь вводит адрес электронной почты человека, которого они хотели бы добавить, и Rails проверяет, зарегистрирован ли этот адрес электронной почты. Если это электронное письмо зарегистрировано (и учетная запись существует), оно будет отображаться из A и отправлять электронное письмо «присоединиться к проекту», если электронное письмо не совпадает с одним в базе данных (пользователь не существует), он будет отображать другую форму, форму B и отправьте электронное письмо с приглашением на SITE.
У меня сейчас функции работают отдельно. Один для приглашения существующих пользователей и один для приглашения новых пользователей. Вот что у меня есть.
Посмотреть:
= 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"
#add_existing_member_form.template.hide
.label_top
= label_tag 'Enter email address or name'
= text_field_tag 'new_member_email', "", :class => "existing_member_autocomplete"
#membership_form.template.hide
%p Pending acceptance.
= f.fields_for(:memberships, Membership.new(), :child_index => 'new_membership') do |ff|
= render 'membership', :ff => ff
Приложение.js:
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)
}
})
}
var insert_membership_form = function(item){
$('#membership_form_footer').before("<h2>"+item.label+"</h2>")
var template = $('#membership_form').clone()
$(template).find('#project_memberships_attributes_new_membership_user_id').val(item.id)
$('#membership_form_footer').before( template.html().replace(/new_membership/g, new Date().getTime()) )
}
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()) )
}
контроллер:
@users_for_autocomplete = User.not_member_of(@project.id).to_json(:only => :id, :methods => :label)
Есть ли способ запустить оператор if / else
в функции insert_membership_form(), чтобы, если пользовательский ввод не совпадает ни с одной из записей, вместо рендеринга insert_membership_form с записью пользовательского интерфейса он вставлял членство с приглашением?
В качестве альтернативы, есть ли более простой способ проверить наличие :email без использования jQuery? Я имею в виду, есть ли способ написать этот код в рельсах, чтобы пользователь просто вводил электронное письмо, он проверял, существует ли он, если true, он отображает существующий член для, если false, он отображает форму нового члена? Ваша помощь будет принята с благодарностью!
Спасибо за помощь и время!!