0
我有一個名爲AdminController與此代碼控制器:訪問是helper_method
module Admin
class AdminController < ApplicationController
helper_method :sort_column, :sort_direction
private
def sort_column(object, column)
object.column_names.include?(params[:sort]) ? params[:sort] : "#{column}"
end
def sort_direction
%w[asc desc].include?(params[:direction]) ? params[:direction] : "desc"
end
end
end
然後在另一個控制器稱爲ArticlesController我有這樣的代碼:
module Admin
class ArticlesController < AdminController
def index
@articles = Article
.where(status: params[:status].present? ? params[:status] : 1)
.order(sort_column(Article, 'publish_date') + ' ' + sort_direction)
end
end
end
應該使用一些輔助方法在父控制器進行排序,但我得到的錯誤:wrong number of arguments (0 for 2)
這一行:def sort_column(object, column)
我應該還提到我使用幫手進行排序:
module ApplicationHelper
def sortable(column, title = nil)
title ||= column.titleize
css_class = (column == sort_column) ? "current #{sort_direction}" : nil
direction = (column == sort_column && sort_direction == "asc") ? "desc" : "asc"
link_to title, {:sort => column, :direction => direction}, {:class => css_class}
end
end
因此,爲什麼我使用helper_method。
..在哪一行?你有堆棧跟蹤嗎? –
在app/controllers/concerns /中的模塊中定義方法,並將該模塊包含在所需的控制器中。 –
@DamienRoche添加了哪一行,正在打破。 – Cameron