在我的Rails应用程序中,我有这个:
class ProjectsController < ApplicationController
include ApplicationHelper
def index
@payments = current_user.projects.custom_order
end
...
end
module ApplicationHelper
def custom_order
order("name ASC")
end
end
但是,在我的index
视图中,我收到此错误:
undefined method 'custom_order' for #<Class:0x007f8be606ff80>
如何做到这一点?
我想将custom_order
方法保留在帮助程序模块中,因为我在各种不同的控制器中使用它。
感谢您的帮助。
答案 0 :(得分:1)
我知道你的意思,但正确的方法是使用模型范围:
class Project < ActiveRecord::Base
#...
scope :custom_order, order('name ASC')
#...
end
答案 1 :(得分:0)
将其移动到应用程序控制器。并使其成为辅助方法。
或者在应用程序控制器中包含应用程序助手模块。因此,您将能够访问所有控制器中的所有应用程序帮助程序方法。
答案 2 :(得分:0)
通常,View Helpers用于渲染基于html的输出,在那里你不能指望基于模型的查询。
在Application帮助程序中编写辅助方法后,可以在Any视图中调用它。
像这样更改您的查询
@payments = current_user.projects.order("name")
或者在您的模型中使用范围制作。
scope :custom_order, order('name ASC')