2017-05-14 83 views
1
module ApplicationHelper 

def sortable(column, title = nil) 
title ||= column 
css_class = column == sort_column ? "current #{sort_direction}" : nil 
direction = column == sort_column && sort_direction == "asc" ? "desc" : "asc" 
sort_arrow = "" 
if(column == sort_column) 
    if(direction == "desc") 
    sort_arrow = "▼" 
    elsif(direction == "asc") 
    sort_arrow = "▲" 
    end 
end 
link_to sort_arrow+title, {:sort => column, :direction => direction, 
       :search_form => @search_form.attributes 
}, {:class => css_class} 

end 
end 

此使用以上方法试验的辅助方法是我想测试的问题是,sort_column方法是在控制器上的方法中,因此,我得到一个错误信息method does not exist。我该如何摆脱它,或者如何让控制器执行该方法?与控制器

编辑: 控制器:

class ResultsController < ApplicationController 
def sort_column 
    params[:sort] != nil ? params[:sort] : 'ID' 
end 
end 
+0

你可以添加包含'sort_column'方法的控制器到你的问题吗? – ArtOfCode

+0

做到了。我刚刚用'sort_column'方法添加了零件 – Mattia

回答

0

简单的方法:移动sortable方法ResultsControllerhelper_method声明。

class ResultsController < ApplicationController 
    helper_method :sortable 

    def sort_column 
    params[:sort] != nil ? params[:sort] : 'ID' 
    end 

    def sortable(column, title = nil) 
    title ||= column 
    css_class = column == sort_column ? "current #{sort_direction}" : nil 
    direction = column == sort_column && sort_direction == "asc" ? "desc" : "asc" 
    sort_arrow = "" 
    if(column == sort_column) 
     if(direction == "desc") 
     sort_arrow = "▼" 
     elsif(direction == "asc") 
     sort_arrow = "▲" 
     end 
    end 
    link_to sort_arrow + title, 
      {:sort => column, :direction => direction, 
      :search_form => @search_form.attributes}, 
      {:class => css_class} 

    end 
end 
+0

有没有很难的方法? – Mattia

+0

也许,但你可能不想使用它:) – ArtOfCode

+0

事情是,我想避免移动辅助方法到控制器 – Mattia