سؤال

لست متأكدا حقا ما إذا كانت هناك مشكلة واحدة هنا أو قد اقتربت من ذلك بطريقة خاطئة، لكن أي اقتراحات سيكون موضع تقدير كبير!

في التطبيق عندما يقوم المستخدم بتسجيل الدخول، يحصلون على امتيازات ويتم إعداد صفحتهم، فيمكنهم بعد ذلك دعوة الزملاء عن طريق البريد الإلكتروني.

يحتوي البريد الإلكتروني على رمز التنشيط الموسومة في النهاية. مثال عنوان URL سيكون "/ المستخدم / new / xxxxxxxxx".

إليك المشكلة: أحتاج إلى أن يتمكن الزميل من إنشاء حساب مستخدم أيضا، مع معلوماتهم الأساسية فقط، حتى يتمكنوا من تسجيل الدخول إلى الحساب وإعداد زاوية التطبيق الخاصة بهم.

عندما يرتكب الزميل خطأ في نموذج التسجيل المستخدم، ينسى عنوان URL هناك رمز تفعيل، ويقفز مرة أخرى مع رسائل التحقق من الصحة وعنوان URL عاري جدا من "/ المستخدمين". عندما يعدل الزميل أخطائها ونقر فوق التسجيل، يتم تقديمها كمستخدم كامل بالكامل، وليس زميلا مدعوما.

يحدث هذا لأن لدي جملة إذا كانت صفحة "المستخدمين / الجديد"

<% if @activation_code %>
  Show colleague messages of invitation and happiness
<% else %>
  Show fully fledged user ego stroking messages
<% end %>

التوجيه الخاص بي للعثور على معلمة رمز عنوان URL هو:

map.signup '/users/new/:code', :controller => 'users', :action => 'new', :code => nil

كما قلت من قبل، هل اقتربت من هذا الخطأ تماما؟ هل هناك مشكلة واحدة هنا؟

تحديثتم حل هذه القضبان الحلقة التي تم حلها تقريبا جميع المشكلات التي أواجهها: دعوات بيتا

على الرغم من التمييز إذا كان الشخص قادما من دعوة أم لا، فقد استخدمت كتلة هذه الشروط:

if !@user.invitation_id.blank?

وهذا يعمل بشكل رائع.

هل كانت مفيدة؟

المحلول

ايم التخمين تحكم الخاص بك يبدو وكأنه هذا:

def create
  if @user = User.create(params[:user]) && @user.new_record?
    #take the user to where you want them to go
  else
    #there was an error
    flash[:error] = "Oops, blah blah blah"
    render :action => "new"
  end
end

المشكلة هي أنه لا تملك @code_code في العرض بعد الآن. لذلك، أود أن أقترح أنك تمر بنشاط_Code مرة أخرى في حقل نموذج مخفي.

def create
  @activation_code = params[:activation_code]
  if @user = User.create(params[:user]) && @user.new_record?
    #take the user to where you want them to go
  else
    #there was an error
    flash[:error] = "Oops, blah blah blah"
    render :action => "new"
  end
end

بهذه الطريقة عند تقديم عرض "جديد" من إنشاء الإجراء الخاص بك، ستظل عرض طريقة العرض الخاصة بك في rectivation_Code المطلوبة للمساعدة في تقديم العناصر الشرطية المناسبة.

نصائح أخرى

بمجرد زيارة الصفحة باستخدام رمز التأكيد، قد تفكر في تضمين رمز التأكيد في <input type="hidden" /> العلامة للتأكد من أنها محفوظة بين أبعز البريد.

خلاف ذلك، تحتاج إلى تعديل الإجراء لنموذج التسجيل الخاص بك لتضمين رمز التنشيط؛ شيء من هذا القبيل:

form_for @user, :url => "/users/new/#{@activation_code}" do |f|
# ...
end
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top