0

我想将当前项目的 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
4

1 回答 1

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。

于 2013-02-12T19:28:42.720 回答