ArgumentError - 参数数量错误(给定2,预期0..1):排序问题Rails 4.2

时间:2016-07-11 16:59:29

标签: ruby-on-rails

我正面临着这样的问题:

  

ArgumentError - 参数数量错误(给定2,预期0..1):
  actionpack(4.2.6)lib / action_dispatch / routing / url_for.rb:156:in   url_for' actionview (4.2.6) lib/action_view/routing_url_for.rb:94:in url_for'的ActionView   (4.2.6)lib / action_view / helpers / url_helper.rb:181:link_to'
app/helpers/application_helper.rb:7:in
可排序'
  应用程序/视图/联系人/ _sort.html.erb:3:在   `_app_views_contacts__sort_html_erb

这是我的application_helper.rb:

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

在上面的代码中,link_to是我在日志中收到错误的行。 这是我的_sort.html.erb(从索引文件中呈现):

<div id="sort_control"><a href="#">sort</a></div>
<ul class="sort" style="display:none;">
    <li><%= sortable "created_at" %></li> #here I am getting error
    <li><%= sortable "firstname" %></li>
  <li><%= sortable "lastname" %></li>
  <li><%= sortable "email" %></li>
</ul>

这是我的控制器方法:

def index
    @contacts = Contact.search(params[:search]).order(sort_column + " " + sort_direction).paginate(:per_page => 60, :page => params[:page])
end

2 个答案:

答案 0 :(得分:0)

我对Rails相当陌生,但看起来它不喜欢你的课程被包裹在{}

11111111

根据docs,它应该如下所示:

link_to title, params.merge(:sort => column, :direction => direction, :page => nil), {:class => css_class}

显示的一个例子:

  

link_to“Articles”,articles_path,id:“news”,class:“article”

答案 1 :(得分:0)

该错误表示您将{2}参数传递到url_for方法的link_to部分时,只需要1个。

你试过这个吗?:

link_to title, {params.merge(sort: column, direction: direction, page: nil)}, class: css_class