我正在开发一个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
提前感谢所有帮助!
答案 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
方法。