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