目前,我在项目/索引视图中有一个项目列表。当您点击项目旁边的“显示”时,它会转到该项目的显示视图。在那里,您可以点击'选择项目',并将该项目的ID传递到会话中,以便只有与该项目相关的相关任务才会显示在其他页面中。Rails - 使用下拉菜单中的信息为方法操作提供参数
我想要做的是有一个项目的下拉菜单(这样你就不会看到所有项目的大型长表),并有两个按钮旁边的下拉菜单 - 一个查看更多信息(即转到该项目的显示视图),然后选择'选择项目'。我怎样才能让他们有正确的信息(即项目ID),以便他们正常工作?谢谢!
这里的所有相关代码:
项目下拉:
<%= collection_select(:project, :id, Project.all, :id, :name) %>
链接显示的看法:
<%= link_to 'Show', project, :class =>"btn btn-primary btn-mini" %>
链接到 '选择项目'
<%= link_to 'Select Project', select_project_project_path(@project), :method => :post, :class => 'btn btn-primary btn-small' %>
选择项目在项目控制器动作:
def select_project
project = Project.find(params[:id])
session[:project_id] = project.id
redirect_to root_url, notice: "Current project set to: #{project.name}, ID: #{project.id}"
end
UPDATE:
下面是相关航线:
resources :projects do
member do
post :select_project
end
end
耙路线的结果| grep的项目:
select_project_project POST /projects/:id/select_project(.:format) projects#select_proj
projects GET /projects(.:format) projects#index
POST /projects(.:format) projects#create
new_project GET /projects/new(.:format) projects#new
edit_project GET /projects/:id/edit(.:format) projects#edit
project GET /projects/:id(.:format) projects#show
PUT /projects/:id(.:format) projects#update
DELETE /projects/:id(.:format) projects#destroy
这是用haml写的吗? Mine是一个.erb文件 - 我如何将其翻译成工作?你的代码看起来像我之后,谢谢! – ecs
现在它是erb :) – cutalion
谢谢!试了一下,我现在得到一个错误:没有路线匹配{:action =>“select_project”,:controller =>“projects”,:id => nil} - 这是否意味着它没有得到ID传递给它,还是可能是在初始页面加载,没有id被传递? – ecs