2011-12-12 139 views
5

我正在开发一个Rails v2.3.2应用程序。link_to路径定义

我有一个控制器:

class SchoolController < ApplicationController 
    ... 

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

    end 

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

end 

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

应用程序/视图/学校/ edit.html.erb:

link_to 'Check teachers' WHAT_IS_THE_PATH_HERE 

回答

22
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-helper通过这样的命名路线产生:

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

,你可以使用这个ID查找教师在控制器

def check_teachers 
    @school = School.find params[:id] 
    @teachers = @school.teachers 
    ... 
end 
+0

你怎么得到'check_teachers_path' url?有没有办法来检查哪些网址可用,或者这是一种特定的命名格式?谢谢! – ddolce

+0

'rake routes'将为您提供URL和URL助手(如果可用)。 – rubyprince

+0

你的意思是'前缀'列?所以在这种情况下,我应该看到'check_teachers'对吗?我需要做的就是在它后面添加一个'_path'? – ddolce

2

您可以在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 

这是未经测试,但应该工作。只是评论,如果你有任何进一步的问题。