创建嵌套路由

时间:2013-02-14 17:16:09

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

在我的应用中,我有拥有门票的项目。我希望能够以下列方式显示票证:

/projects/43/tickets

此路线有效,但会显示所有故障单,而不仅仅是显示属于该项目的故障单。我需要改变什么?

路线:

resources :projects do
  resources :tickets do
    collection do
      get "manage"
    end 
  end
end

型号:

class Ticket < ActiveRecord::Base
  belongs_to :project
  ...
end

class Project < ActiveRecord::Base
  has_many :tickets, :dependent => :destroy
  ...
end

故障单通过以下方式连接到项目:

Tickets (table)
    project_id
    ...the rest of the fields...

1 个答案:

答案 0 :(得分:1)

这是控制器逻辑,而不是路由逻辑。在tickets_controller.rb

def index
    @project = Project.find(params[:project_id])
    @tickets = @project.tickets
end

现在,@tickets将包含当前项目的所有票证。