
ojab
26.02.2017
16:21:38
А что этот код дожен делать, в теории? При клике на [непонятно что] загружать [непонятно что] и вставлять это в [куда]?

Alex
26.02.2017
16:21:51
> x-requested-with:XMLHttpRequest

ojab
26.02.2017
16:22:38
ну и таки да, https://github.com/kaminari/kaminari#ajax-links-crazy-simple-but-works-perfectly

Demyan
26.02.2017
16:28:32

Google

Alex
26.02.2017
16:28:48
да, через XHR поидее должен приходить такой заголовок
соответственно в контролере метод xhr? просто проверяет есть этот заголовок или нет.

ojab
26.02.2017
16:31:19
Зачем вообще в контроллере xhr? проверять?

Alex
26.02.2017
16:32:03

ojab
26.02.2017
16:32:46
.js.erb из коробки не будет layout отдавать, если рендерится partial

Alex
26.02.2017
16:33:01
так то js.erb
а я может модалку рисую которая может личную страничку иметь.

ojab
26.02.2017
16:33:38
мы тут, вроде бы, вполне конкретный кейс обсуждаем. В gist'e index.js.erb.

Demyan
26.02.2017
16:40:31
убираю турболинки
и грузится все целиком

ojab
26.02.2017
16:42:35
Когда ты нажимаешь что грузится всё целиком? Что такое целиком? С layout'ом? Что сейчас в контроллере написано? pageinate с remote: true делаешь, как по ссылке выше, или всё ещё нет?

Demyan
26.02.2017
16:42:38
во
чойто я починил

Google

Demyan
26.02.2017
16:42:55
или сломал. оно стало присоеденять к концу блока
типо новости с первой страницы, потом со второй. но без перезагрузки.
заголовок верный. ajax
тут влияет то что я весь день пытаюсь сделать одну фигню. и из-за своей неопытности делаю одну или несколько ошибок в каждой новой попытке. и под конец там уже опечатки и тп. из-за запутанности
какой jquery метод позволяет заменить все содержимое контейнера на новое
?

ojab
26.02.2017
16:47:33
.html

Alex
26.02.2017
16:48:11
дело скорее в пробелах в понимании как стек работает.

Demyan
26.02.2017
16:48:38
спасибо)
у меня пробелов в знаниях больше чем их наличия

Alex
26.02.2017
16:49:39
нужно уметь юзать network вкладку в dev tools хрома, и console.log в сценариях хотя бы.
Тогда можно по шагам продебажить что где и как.

Demyan
26.02.2017
16:50:35
я юзаю ее.

Alex
26.02.2017
16:50:59

Demyan
26.02.2017
16:56:07
спасибо))
я выше видел) и сделал)
осталось сделать чтобы оно писалось в историю и адресную строку
а то молча переходит
Спасибо всем за уделенное время)

ojab
26.02.2017
17:07:40

Google

Alex
26.02.2017
17:08:03
Для новичка - может появиться куча вопросов без ответов, мол как оно внутри работает.
Иначе говоря еще больше магии.

ojab
26.02.2017
17:09:02
И какие же вопросы могут возникнуть при использовании remote: true, которые не возникнут при использовнии люого дуруого ajax?
и это всё в официальном гайде описано, в отличие от
https://gist.github.com/ojab/2e9750d02ea48379cc9a0ac93ddfc2ae
весь код, который требуется для того чтобы kaminari работало через ajax. Из отличий от стандартного html — remote: true во вьюхе и долбавленный index.js.rb
и никаких откючений турболинков, проверки request.xhr? во вьюхе и прочих сложностей.

Alex
26.02.2017
17:14:11
вопросы возникнут когда jquery библиотеки не будут ловить нужные эвенты, потому что их нет, потому что страница не перезагрузилась, например.

ojab
26.02.2017
17:18:26
Плохой аргумент, в случае "как мне сделать пагинацию через ajax" причин отключать турболинки (как и проверять xhr в контроллере и пр.) ровно ноль. Сейчас в Demyan'a вместо простого и рекомендуемого решения в коде непонятно что и в голове мысль "как всё сложно и непонятно".
ну и сомнительный совет — не использовать всё, по поводу чего возникают вопросы

Demyan
26.02.2017
17:22:56
Кстати, я удалил все что было. Сделал снова аккуратно. И у меня вышло в итоге то что в гисте от ojab'a

Alex
26.02.2017
17:23:50
Правильно сделал.

Demyan
26.02.2017
17:23:56
А касательно совета про недоверие, это нормальная тема, не доверять ничему кроме себя, а себе не доверять вдвойне.
Уровень доверия повышается настолько насколько полно ты знаешь внутренности по\либы что ты юзаешь. Но иногда когда не особо критично, можно взять на веру.
Можно направление мне подсказать? Куда поглядеть чтобы найти способ добавления переходов вместе с запросами? чтобы текущий адрес страницы менялся и в истории отображало

ojab
26.02.2017
17:41:53
Дёргать https://developer.mozilla.org/en/docs/Web/API/History в ответе, например

Demyan
26.02.2017
17:44:47
крч тупо писать в браузер. понял спс
причем можно турболинкс стейтс заюзать
коли теперь он не отключён
Хотя мне непонятно почему не работает из коробки у меня история и адресная строка при ajax запросах. если во всех примерах она работает

Google

ojab
26.02.2017
18:53:15
сомнительно что в примерах она работает

Demyan
26.02.2017
18:53:17
оно втихую грузит и все
я видел в одном примере костыли. так там грузилось не через js.erb а через свой костыльный js скрипт который где то там в процессе добавлял в историю.
это выглядит как то слишком стремно, чтобы быть зебест практис


Eugene
26.02.2017
21:42:33
есть такая зависимость
resources :users do
resources :instructions do
resources :steps
end
end
ну и мне надо сохранять step с instruction_id,
я передаю его из instruction_controller
в методе show
redirect_to controller: 'steps', action: 'index',
instruction_id: current_instruction_id
аля такой штуки
но получается только как у меня отрендеривается вьюха, @params = params подчищается
самая интересная штука, то что у меня js и там идёт метод create
я пытаюсь http://localhost:3000/steps?instruction_id=93 попарсить текущий урл
через request.original_url
выдает:
1] pry(#<StepsController>)> request.original_url
=> "http://localhost:3000/steps"
т.е. не попарсишь, всё как-то печально
существует еще какой способ сохранить, ну глобальная переменная это костыль, но больше ничего не в голову не всплывает.
тема поднималась ранее, тогда я ее решал, сейчас прикрутил js и не знаю что делать
https://gist.github.com/Evshved/d8d4e625e2bbe29d4654b39cb92d6b52


Victor
27.02.2017
06:28:44
Жень, ну я конечно сейчас банальную вещь скажу, но делается это так - открываешь дев консоль в хроме, вкладка network, тсавишь галку Presereve log, начинаешь тестировать свое приложение и смотришь внимательно все запросы, которые идут на сервер. Из этих данных тебе станет понятно, что ты можешь достать из request, а что надо доотправить как параметр
просто надо четко понимать, что редирект - это ты отдал 302, и браузер щас тебе еще один запрос пришлет, а render вьюхи из другого контролера - это ты просто отдал в этом же реквест/респонс цикле другой какой-то контент, вместо того, что рельсы отрендерили бы по дефолту

Konstantin
27.02.2017
06:52:34
https://accidentallyquadratic.tumblr.com/post/157496054437/ruby-reject

Admin
ERROR: S client not available

Konstantin
27.02.2017
06:52:40
о чём я и говорил всегда
https://github.com/ruby/ruby/commit/5ec029d1ea52224a365a11987379c3e9de74b47a#diff-c4ab1401c2728a23df564472e609b2d8L664
а вот это вообще дичь
взял из регрессионного теста удалил всю его мякотку
проще было сами тесты удалить
https://github.com/jeremyevans/ruby-refrigerator evans красавчик как обычно

Dan
27.02.2017
12:08:49
Коллеги, подскажите пожалуйста какой-нибудь годный мануал и (или) best practice для безопасной авторизации и токенов при создании rest api на рельсах.

s
27.02.2017
12:18:30
можно загуглить на тему json web tokens

Dan
27.02.2017
12:20:42
нагуглил вот такое https://www.pluralsight.com/guides/ruby-ruby-on-rails/token-based-authentication-with-ruby-on-rails-5-api
в целом более-менее понятно, но есть ли какие-нибудь общие рекомендации и best practices?

Google

Vasiliy
27.02.2017
12:27:24
есть такая вот ещё
http://apionrails.icalialabs.com/

Dan
27.02.2017
12:28:22
о! спасибо большое

Vasiliy
27.02.2017
12:29:07
такое
http://stackoverflow.com/questions/18605294/is-devises-token-authenticatable-secure
https://labs.kollegorna.se/blog/2015/04/build-an-api-now/

Dan
27.02.2017
12:30:00
вот вообще то что надо, особенно в плане секурности
спасибо большое

Vasiliy
27.02.2017
12:30:14
я примерно так накидывал с многими токенами
https://gist.github.com/stiig/ab9a0cbeabfad7d633952d55ae9f9dd5

Victor
27.02.2017
12:31:07
Хм, если у тебя фронт на том же домене, что и апишка – юзай куки, это проверенный годами вариант, в котором уже много чего учли. С токенами, которые начинают хранить в session storage или local storage, есть проблемки

Vasiliy
27.02.2017
12:31:59
эт кстати да, если для фронта devise хватает с (почти) дефолтными настройками

Dan
27.02.2017
12:33:07
там не только фронт будет, еще планируются всякие сторониие приложения

Victor
27.02.2017
12:33:10
Jwt – это решение для сайтов типа Реддита, где лишний раз сходить в бд - это пипец нагрузка.
Ну или для комбинации апп&сайт&другой апп
Если приложений много разных, то наверное джот попрет, потому что понятный стандарт

Vasiliy
27.02.2017
12:34:50
jwt на самом деле очень ок смотрится но я чет не допер как его грамотно организовать(пока)

Victor
27.02.2017
12:35:41
Не будет головняка на стыке команд, которые пишут апи и сайт.

Dan
27.02.2017
12:36:15
jwt выглядит интересно

Vasiliy
27.02.2017
12:36:54
с jwt мы тут обсуждали надо как-то организовать удаление токена невалидного

Dan
27.02.2017
12:37:26
по таймауту?

Victor
27.02.2017
12:37:26
Например, отозвать токен нельзя. Нужен либо блеклист, либо очень короткий срок жизни у токена
Если блеклист – то его надо чистить и тд

Vasiliy
27.02.2017
12:38:05
по таймауту - был варик, но ты че юзера всегда будешь просить вводить лониг пасс?
ну как пример мобильное приложение которое в сервер стучит