Pertanyaan Menyegarkan div dengan isi flash [: notice] menggunakan right.js?


Saya menggunakan template haml inline di aplikasi sinatra saya. Saya punya @@layout dengan bagian seperti ini:

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

Ketika saya menggunakan flash[:notice] = "Halo!" dalam rute & klik pada tautan, halaman berikutnya dengan gembira mengatakan Halo "di #message div. besar.

Jadi di sini masalahnya, saya menggunakan right.js untuk menambahkan beberapa kebaikan ajax ke aplikasi saya, Perilaku rak-flash tidak konsisten di terbaik.

Sering kali, Anda mengeklik tautan (.linkey), sedikit javascript memotongnya & memuat ke dalam #content div (bagian ini berfungsi juga), maka div '#message' dimuat ulang & flash untuk tindakan sebelumnya ditampilkan ... pada saat Anda mengklik tautan ... sekitar 80% waktu, sisa dari waktu tidak ada yang ditampilkan.

Ini adalah js saya:

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

Saya ingin sesuatu seperti ini:

1) Klik tautan

2) target tautan (/ foo) dimuat #content 

3) #message diisi ulang dengan pesan (dari rute flash[:notice] = "bar")

4) #content sekarang menampilkan /foo & #message menampilkan "bar"

Saya juga sudah mencoba ini $('message').load( '/message' ); tapi itu tidak memuat apa pun #message atau mengisi #message dengan "/ message" (string bukan isinya).

Saya ingin tahu apa yang terjadi di sini? Apakah itu sesuatu dengan rak-flash atau right.js? atau sesuatu yang lain? Saya dapat memberikan lebih banyak kode jika diperlukan tetapi sebenarnya tidak lebih dari kerangka dasar karena saya baru memulai proyek ini.


7
2018-02-25 02:08


asal


Jawaban:


Untuk permintaan AJAX yang dijalankan melalui aksi pengontrol, Anda harus menggunakannya flash.now sehingga pesan flash akan tersedia untuk permintaan saat ini. Jadi, dalam kasus Anda, flash.now[:notice] = "bar".


1
2018-03-18 04:53