无法将project.id从视图传递到控制器
问题描述:
我想将当前项目的id传递给票据控制器(为该项目创建票据),我在下面尝试执行此操作。但是,我这样做是通过以下方式给了我下面的链接:无法将project.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
答
如果门票贝隆g到项目中,您可能需要考虑嵌套资源。
现在,你的路线可能是这样的:
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。
'new_ticket_path(:project_id => @project.id)'?你错过了'@'? – fl00r 2013-02-12 19:03:24
我也尝试过,同样的错误。虽然我认为它应该与@所以我会编辑我的Q. – holyredbeard 2013-02-12 19:04:37
html'link_to'生成什么? – fl00r 2013-02-12 19:06:04