Обновление div с содержимым flash [: note] с использованием right.js? - PullRequest
7 голосов
/ 25 февраля 2012

Я использую встроенные шаблоны haml в своем приложении sinatra. У меня есть @@layout с таким разделом:

#message
  - if flash[:notice]
    %section.notice= flash[:notice]
  - if flash[:error]
    %section.error= flash[:error]

Когда я использую flash[:notice] = "Привет!" в маршруте и нажмите на ссылку, следующая страница радостно говорит «Привет» в #message div. great.

Так вот в чем проблема, я использую right.js, чтобы добавить некоторую привлекательность ajax в свое приложение. Поведение стеллажной флэш-памяти в лучшем случае противоречиво.

В большинстве случаев вы нажимаете на ссылку (.linkey), немного javascript перехватывает ее и загружает в div #content (эта часть также работает), затем div #message перезагружается & Вспышка для предыдущего действия отображается ... при следующем щелчке по ссылке ... в 80% случаев, в остальное время ничего не отображается.

Это мой JS:

"a.linkey".onClick(function(event) {
   event.stop();
   $('content').load( [ "/", this.get('id'), ].join("") );
   $('message').load( '/message' );
});

Я хотел бы что-то вроде этого:

1) Нажмите на ссылку

2) целевая ссылка (/ foo) загружается в #content

3) #message перезагружается с сообщением (с маршрута flash[:notice] = "бар")

4) #content теперь отображается /foo & #message отображает "полосу"

Я также пробовал это с $('message').load( '/message' );, но он либо ничего не загружает в #message, либо заполняет #message "/ message" (строка, а не содержимое).

Я хотел бы знать, что здесь происходит? Это что-то с rack-flash или right.js? или что-то другое? Я могу предоставить больше кода, если это необходимо, но на самом деле ничего не выходит за рамки базового фреймворка, так как я только начинаю этот проект.

1 Ответ

1 голос
/ 18 марта 2012

Для запросов AJAX, выполняемых через действие контроллера, вам нужно будет использовать flash.now, чтобы флэш-сообщение было доступно для текущего запроса.Так что в вашем случае flash.now[:notice] = "bar".

...