определение пути link_to - PullRequest
       1

определение пути link_to

7 голосов
/ 12 декабря 2011

Я разрабатываю приложение 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

in 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

Ответы [ 2 ]

23 голосов
/ 12 декабря 2011
link_to 'Check teachers', :action => :check_teachers, :id => @school.id

или

link_to 'Check teachers', "/school/check_teachers/#{@school.id}"

или вы можете определить именованный маршрут в config/routes.rb следующим образом:

map.check_teachers, '/school/check_teachers/:id' :controller => :school, :action => :check_teachers

и вызовите помощника по URL, сгенерированного named-route, следующим образом:

link_to 'Check teachers', check_teachers_path(:id => @school.id)

и вы можете использовать этот идентификатор для поиска учителей в контроллере

def check_teachers
  @school = School.find params[:id]
  @teachers = @school.teachers
  ...
end
2 голосов
/ 12 декабря 2011

Вы можете определить что-то подобное в вашем файле routes.rb.

map.connect "schools/:id/check_teachers", :controller => "schools", :action => "check_teachers"

Затем вы настроите link_to следующим образом:

link_to "Check teachers", check_teachers_path(:id => @school.id)

Вы будетенеобходимо добавить этот бит кода в контроллер, так как состояния модели не распределяются между действиями контроллера:

 def check_teachers
    @school = School.find_by_id(params[:id])
    # Then you can access the teachers with @school.teachers
  end

Это не проверено, но должно работать.Просто прокомментируйте, если у вас есть какие-либо вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...