Ներկայումս ես Ajax-ի զանգ ունեմ կոճակի սեղմման միջոցով, որը թարմացնում է գնումների զամբյուղը, բայց վերահսկիչի վրա, որում այն տեղադրվում է, կիրառվում է authenticate_user!
before_filter-ը, ինչը ես ուզում եմ, քանի որ օգտվողը պետք է մուտք գործի:
Քանի որ դա ajax զանգ է, ես սովորաբար ստանում եմ 401
սխալ և ոչ մի վերահղում, այնպես որ դա լուծելու համար ես ունեմ.
$(document).on "ajaxError", (event, request, settings) ->
if request.status == 401
window.location.href = '/users/login'
Այնուամենայնիվ, սա ինձ խնդիրներ է առաջացնում, երբ ֆլեշ[:notice]-ը հայտնվի, քանի որ այն կորել է, երբ ես մուտք գործեմ մուտքի էջ:
Այստեղ տարբեր գրառումների վերաբերյալ որոշ ընթերցումներից ես հասկանում եմ, որ կարող եմ օգտագործել flash.keep
-ը, որը կպահպանի իմ հաղորդագրությունը, բայց կարծում եմ, որ դա անելու համար ես պետք է փոխեմ իմ մոտեցումը վերահղման հետ կապված: Եթե ես կարողանայի դա անել կարգավորիչում, ես կարող եմ նաև օգտագործել if request.xhr?
-ը, չէ՞:
Իմ հարցն այն է, թե ինչպես կավելացնեմ այս ֆունկցիոնալությունը՝ միաժամանակ պահպանելով authenticated_user!
օգնական մեթոդի բոլոր առկա գործառույթները: Դիզայներական փաստաթղթերին նայելուց հետո օգնականը դինամիկ կերպով կառուցված է, այնպես չէ՞:
Ես գիտեմ, որ կարող եմ օգնական տեղադրել իմ հավելվածի վերահսկիչի մեջ.
def authenticate_user!
super
end
Այսպիսով, ընդլայնելով, ես փորձել եմ
def authenticate_user!
if request.xhr?
respond_to do |format|
format.html { redirect_to new_user_session_path }
end
else
super
end
Բայց երբ սեղմում եք թարմացման կոճակը, որը սա է
$(window).load ->
$('a[data-target]').click (e) ->
e.preventDefault()
$this = $(this)
if $this.data('target') == 'Add to'
url = $this.data('addurl')
new_target = "Remove from"
else
url = $this.data('removeurl')
new_target = "Add to"
$.ajax url: url, type: 'put', success: (data) ->
$('.badge-number').html(data)
$this.find('span').html(new_target)
$this.data('target', new_target)
Ես ստանում եմ այս սխալը վահանակում
Routing Error
No route matches [PUT] "/users/login"
Չգիտեմ, թե որտեղից գնալ:
guest_user
-ը լավ լուծում է, բայց միայն այն դեպքում, երբ մենք պետք է երկար ժամանակ գրանցենքshoping card
ը: Մենք պետք է օգտագործենք small_time_living-ըshoping card
-ի համար՝ օգտվողների սխալ պատվերներից խուսափելու համար: (Որոշ ժամանակ առաջ օգտատերը ինչ-որ բան դրեց զամբյուղի մեջ, այնուհետև փակեց պատուհանները, գտեք մեկ այլ բան և դրեց այն նաև զամբյուղի մեջ: Օգտվողը սեղմեքpay shoping cart
և կտեսնի, թե ինչ-որ մեկին չի ուզում գնել... IMHO,shoping cart
չի պահանջվում ուժեղ Անվտանգության կոդը, եթե այս օգտատերը գումար կվճարի սեփական պատվերների համար... 24.12.2015session[:guest_user_id]
-ը: զրոյական է վերադարձնում, երբ ես հետագա ստուգում եմ անում, նաև չեմ կարող օգտատեր ստեղծել, քանի որ վավերացումը ձախողվում է (էլ.փոստի և գաղտնաբառի կարիք ունի), կցանկանայի բաց թողնելvalidate: false
-ի օգտագործումը, բայց թվում է, թե չեմ կարողfind_or_create_by
որևէ գաղափար ունենալ, կամ ինչ-որ բան չեմ հասկանում :-) 30.12.2015validate_presence_of :email, unless: :guest?
, կամ ինչ-որ բան 30.12.2015id: session[:guest_user_id],
-ի հետ, երբ այն գոյություն չունի (եթե ես առաջին անգամ եմ մուտք գործում կայք), քանի որ սկզբում դա միշտ զրոյական է: 30.12.2015session[:guest_user_id]
, բայց որտեղից է դա գալիս, քանի որ առաջին անգամ այն գոյություն չի ունենա… 30.12.2015