link_to路径定义

Mel*_*lon 7 ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我正在开发一个Rails v2.3.2应用程序.

我有一个控制器:

class SchoolController < ApplicationController
  ...

  def edit
    @school=School.find_by_id params[:id]

  end

  def check_teachers
    @teachers = @school.teachers
    ...
  end

end
Run Code Online (Sandbox Code Playgroud)

app/views/schools/edit.html.erb我想有一个link,点击它会触发check_teachers该方法控制器,如何定义路径为这个link

app/views/schools/edit.html.erb:

link_to 'Check teachers' WHAT_IS_THE_PATH_HERE
Run Code Online (Sandbox Code Playgroud)

rub*_*nce 24

link_to 'Check teachers', :action => :check_teachers, :id => @school.id
Run Code Online (Sandbox Code Playgroud)

要么

link_to 'Check teachers', "/school/check_teachers/#{@school.id}"
Run Code Online (Sandbox Code Playgroud)

或者您可以config/routes.rb像这样定义命名路由:

map.check_teachers, '/school/check_teachers/:id' :controller => :school, :action => :check_teachers
Run Code Online (Sandbox Code Playgroud)

并调用named-route生成的url-helper,如下所示:

link_to 'Check teachers', check_teachers_path(:id => @school.id)
Run Code Online (Sandbox Code Playgroud)

并且您可以使用此ID在控制器中查找教师

def check_teachers
  @school = School.find params[:id]
  @teachers = @school.teachers
  ...
end
Run Code Online (Sandbox Code Playgroud)