【发布时间】:2012-11-15 03:21:05
【问题描述】:
我有一个带有以下部分的 Rails 控制器:
def search
...
@player_to_team_histories = @player_to_team_histories.order(sort_column + " " + sort_direction)
...
sort_column 和 sort_direction 定义为(@player_to_team_histories 是 ActiveRecordAssociation:
private
def sort_column
params[:sort] || "players.LastName"
end
def sort_direction
params[:direction] || "asc"
end
所以从这两个函数返回的文本被插入到@player_to_team_histories 的order 子句中。
我需要在另一个控制器中复制此搜索功能,因此我已将搜索逻辑移至 PlayerToTeamHistories 模型并将 params 哈希作为参数传递给 search 函数。骨架代码:
def self.search_results(params)
...
@player_to_team_histories = @player_to_team_histories.order(sort_column(params) + " " + sort_direction(params))
...
我尝试在模块中定义 sort_column(params) 和 sort_direction(params) 并不断收到 undefined method or variable sort_columns 错误,因此我将实现移至模型底部
def sort_column(params)
params[:sort] || "players.LastName"
end
def sort_direction(params)
params[:direction] || "asc"
end
并且仍然得到未定义的方法错误。我尝试将其简化为:
def sort_column
"players.LastName"
end
def sort_direction
"asc"
end
但这仍然不起作用(我更新了对函数的调用以不使用params)。
知道为什么我不能从模型的另一个函数中调用辅助函数吗?
Rails 3.2.1、Ruby 1.9.2
【问题讨论】:
标签: ruby-on-rails activerecord model controller