私は次の部分を備えた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