Rails 3 Toolbar render - PullRequest
       4

Rails 3 Toolbar render

4 голосов
/ 09 июня 2010

На панели инструментов моего сайта я бы хотел, чтобы количество непрочитанных сообщений отображалось красным кружком,

Так что я думаю, что лучший способ - это создать метод в ApplicationController с именем update_notification:

  def update_notification
     @notification = 42 
     # 42 is just for test
  end

и в application.html.erb я отображаю:

<%= render :partial => 'messages/notification' %>

_notification.html.erb:

<div id="notification">
   <%= @notification %>
</div>

проблема в том, где и когда я могу вызвать метод update_notification (в ApplicationController?) И считаете ли вы, что это лучший способ сделать это?

Спасибо

Ответы [ 2 ]

3 голосов
/ 09 июня 2010

Я думаю, что лучше всего использовать periodically_call_remote:

<%= periodically_call_remote(:url => { :action => 'update_notification' }) %>

И ваше действие должно использовать rjs для обновления элемента на странице.

Создайте файл rjs (например, update_notification.rjs) со следующим содержимым:

page.replace_html "notification", :partial => "messages/notification"

и в вашем контроллере рендер это:

render :action => "update_notification.rjs"
0 голосов
/ 12 июня 2010

before_filter - это то, что вы ищете.Добавьте это в свой ApplicationController:

before_filter :update_notification

и ваш метод будет вызываться перед каждым действием.

...