目前,我在項目/索引視圖中有一個項目列表。當您點擊項目旁邊的「顯示」時,它會轉到該項目的顯示視圖。在那裏,您可以點擊'選擇項目',並將該項目的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