将params和Ruby方法作为link_to的参数发送

时间:2013-02-04 23:52:21

标签: ruby-on-rails ruby-on-rails-3

我无法获得一个link_to方法的两部分参数,其中一个是Ruby方法,另一个是params。

当我使用以下代码时:

<%= link_to "Sort by most active", school_course_path(current_school, :params => "by_most_active") %>

我收到“无法将String转换为Hash”的错误。我试图在params的语法方面遵循这个question,但是无法弄清楚为什么my:params会出错。

感谢。

修改

为了提供额外的上下文,我设置了以下嵌套路由:

  resources :schools do
    resources :courses 
  end

4 个答案:

答案 0 :(得分:1)

看起来您正在尝试链接到course_controller的show方法。你是不是错过了课程对象作为路径助手的第二个参数?

答案 1 :(得分:1)

:params选项期望哈希,而不是密钥,以便您可以指定密钥和值。您需要:params=> { by_most_active: true }

之类的内容

答案 2 :(得分:1)

您正在使用school_course_path,希望将学校和课程作为前2个参数。通过current_school后,您需要提供课程。你应该 同时使用params之类的其他名称更改order部分。所以你的link_to应该看起来像

school_course_path(current_school, course, order: 'by_most_active')

如果您尝试获取current_school最活跃的课程,则应使用school_courses_path

school_courses_path(current_school, order: 'by_most_active')

答案 3 :(得分:-1)

试试这个

<%= link_to "Sort by most active", school_course_path(:current_school => current_school, :params => "by_most_active") %>

并致电

params["current_school"] and current_school["by_most_active"].