私は次の部分を備えた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
orderしたがって、これら2つの関数から返されたテキストは、の句に挿入され@player_to_team_historiesます。
この検索機能を別のコントローラーで複製する必要があるため、検索ロジックを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