无法将project.id从视图传递到控制器

时间:2013-02-12 19:00:25

标签: ruby-on-rails database ruby-on-rails-3 view controller

我想将当前项目的id传递给票证控制器(为项目创建票证),我在下面尝试这样做。但是,我在下面的方式给了我以下链接:

tickets/new?project_id=8

......当我只想这样时:

tickets/new

...即使我希望在控制器中可以访问project_id。

我该怎么做?只是为了澄清:我不希望project_id成为URL的一部分,我只想将它(以某种方式)作为参数传递给控制器​​。

来自视图的

<h1><%= @project.title %></h1> <-- the project's attributes is reachable here

<%= link_to "Create ticket", new_ticket_path(:project_id => @project.id), :class => "btn edit_button" %>

门票控制器:

1.    class TicketsController < ApplicationController
2.        def new
3.            @ticket = Ticket.new
4.            @id = params[:project_id]
5.
6.            @project = Project.find(@id)
7.        end
8.    end

link_to指向的路径如下所示:

new_ticket GET    /tickets/new(.:format)            tickets#new

1 个答案:

答案 0 :(得分:0)

如果故障单属于项目,您可能需要考虑嵌套资源。

现在,您的路线可能如下所示:

resources :projects
resources :tickets

这会生成/projects/new/tickets/new等路线。你可以做的是:

resources :projects do
  resources :tickets
end

这将为您提供/projects/8/tickets/new等路线。您可以通过new_project_ticket_path(@project)链接到新故障单。路线生成的实际形式是:/projects/:project_id/tickets/:id。所以params [:project_id]会给你项目的id。