2017-01-03 39 views
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。

+0

..在哪一行?你有堆棧跟蹤嗎? –

+0

在app/controllers/concerns /中的模塊中定義方法,並將該模塊包含在所需的控制器中。 –

+0

@DamienRoche添加了哪一行,正在打破。 – Cameron

回答

0

ApplicationHelper#sortable調用sort_column無參數。 AdminController#sort_column需要兩個參數(objectcolumn),因此是例外。

要解決該問題,您可以刪除所需參數或更改#sortable以使用它們。這裏最好的選擇是什麼,我不知道,也許它使用類屬性而不是參數#sort_column