使用模型的Rails

时间:2010-10-21 13:10:44

标签: ruby-on-rails

我正在开发一个rails应用程序,它在视图端每5分钟向一个控制器发出一次Ajax调用,以检查是否有为特定用户创建的新消息。现在我知道Rails(或MVC)的方式是使用Fat Models / Skinny Controllers,我如何从我的控制器调用我的模型以便在模型中返回数据?

这是我的控制器:

def get_all_notes_by_page
    if request.xhr?
      return Note.where("page_id = ?", params[:page_id]).count
    end
  end

提前感谢所有帮助!

2 个答案:

答案 0 :(得分:1)

if request.xhr?
  Note.count_by_page_id(params[:page_id])
end

答案 1 :(得分:0)

我会设置定期监听器(此代码使用Prototype库):

new PeriodicalExecuter(function(pe) {
  new Ajax.Request('/controllername/get_all_notes_by_page', {
    onSuccess: function(response) {
      // compare response value with some global variable 
    }
  });
}, 300);

并在控制器端:

def get_all_notes_by_page
  respond_to do |format|
    format.js { render :text => Page.find(params[:page_id]).notes.count.to_s }
  end
end

这个控制器方法足够瘦,但如果你真的想缩短它,你可以在Page模型中定义一个count_notes方法。