Хранение произвольного действия, которое будет выполнено после завершения действия - PullRequest
0 голосов
/ 11 сентября 2010

Поток для моего приложения, для не авторизованных пользователей, выглядит следующим образом:

1) non-logined user does a given action that requires login (arbitrary)
2) dialog appears for non-logined user and he logins without any refreshing of the page
3) collecting of additional information if it is new user
3) the given action should be executed 

Как я могу это сделать? Я считаю, что это можно сделать с помощью тщательно структурированных обратных вызовов. Часть хитрости заключается в том, что существует целый ряд возможных действий

Ответы [ 3 ]

1 голос
/ 11 сентября 2010

Попробуйте посмотреть на плагин таконита для jQuery. На этом и в Ruby была ветка, но, похоже, она исчезла, кроме кеша Google .

1 голос
/ 11 сентября 2010

Сохранить действие как обратный вызов в переменной:

var callback = function() { alert ("You are logged in."); };

Когда незарегистрированный пользователь пытается выполнить это действие, нажав кнопку или что-то еще, ваше приложение должно передать обратный вызов в качестве аргумента функции входа в систему следующим образом:

show_login_form(callback);

... где callback - это то, что будет выполнено при успешном входе в систему. Собираем все вместе:

    var callback = function() { alert ("You are logged in."); };
    if (loggedIn)
         callback();
    else
         show_login_form(callback);

Просто убедитесь, что вы выполняете какую-то проверку на стороне сервера, поскольку мой пример упрощен и легко взломан.

1 голос
/ 11 сентября 2010

Вы отметили ruby-on-rails, так что я думаю, что это будет приложение rails. Планируете ли вы внедрить собственную систему аутентификации и входа в систему или собираетесь использовать гем / плагин. Я спрашиваю, потому что я не думал, что диапазон действий будет сложной, если все действия будут определены в / a контроллере. Например, с devise добавив:

before_filter :authenticate_user!

в контроллере будет гарантировать, что все действия потребуют входа в систему. Это можно уточнить, используя: кроме как

before_filter :authenticate_user!, :except => [:index, :show]

Имея это в виду, нам действительно нужно думать только о частях ajax. Вы могли бы достичь этого, используя шаблоны js.erb и используя response_to в методе, например

def log_in
   respond_to do |f|
     # gracefully fallback!
     f.html { redirect_to new_user_session_path }
     # or do something snazy..
     f.js
   end
end

Сложно было бы заставить работать журнал ajax, но, надеюсь, то, что я сказал, может помочь в мыслительном процессе.

Райан Бейтс сделал хороший скринкаст на jQuery с Rails, но я не могу опубликовать ссылку ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...