2011-01-30 14 views
0

この質問は、レールに対する私の無知、ひどい検索クエリの直接の結果です。私はアプリケーションのすべてのページにソート可能なテーブルを配置しようとしています。基本的に在庫リストはどこにでも表示する必要があります。しかし、ユーザーのプロファイルページでは、未定義のメソッド `sort_by`エラーが発生します。rails 3.0.3埋め込みビュー

ここでその設定方法は、インベントリコントローラに2つのヘルパーメソッドsort_bysort_directionがあります。それから私は、リンクを作成するアプリケーションのヘルパーで、ヘルパーメソッドを持っている:

def sortable(column, title = nil, css_class = "sort") 
    title ||= column.titleize 
    css_class = column == sort_by ? css_class + " current #{sort_direction}" : css_class 
    direction = column == sort_by && sort_direction == "asc" ? "desc" : "asc" 
    link_to title, params.merge(:sort => column, :direction => direction, :page => nil), {:class => css_class} 
    end 

私は私の問題は、私は、ユーザーのコントローラにsort_bysort_directionしばらく使用していることを知っています。しかし、私はどのようにそれらを在庫管理者を通じてアクセスしますか?

答えて

0

これらの2つのメソッドをApplicationControllerに移動し、コントローラーにhelper_method :sort_by, :sort_direction行を追加します(これらのメソッドはヘルパーメソッドとして表示されます)。すべてのコントローラーがそのコントローラーを継承するので、そこにあるすべてのメソッドがすべてのコントローラーで使用可能になり、helper_methodを追加すると、すべてのビューにそれらが公開されます。

つまり、コントローラのアクションでこれらのメソッドを使用していない場合は、ヘルパーにも移動します。

+0

私はそれが "No route matches"エラーのようにモジュール化するときに問題が発生します。私はURLにsort_byパラメータを投げているからです。 具体的には、すべてをapplication_helperに移動しようとしました。 – noazark