現時点では、projects/index ビューにプロジェクトのリストがあります。プロジェクトの横にある [表示] をクリックすると、そのプロジェクトの表示ビューに移動します。そこで「プロジェクトの選択」をクリックすると、そのプロジェクトの ID がセッションに渡され、そのプロジェクトに関連する関連タスクのみが他のページに表示されます。
私がやりたいのは、プロジェクトのドロップダウン メニューを用意し (すべてのプロジェクトの巨大な長いテーブルが表示されないようにするため)、ドロップダウン メニューの横に 2 つのボタンを配置することです。つまり、そのプロジェクトのショー ビューに移動し、1 つを「プロジェクトの選択」に移動します。それらが適切に機能するように、正しい情報 (つまり、プロジェクト 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
アップデート:
関連するルートは次のとおりです。
resources :projects do
member do
post :select_project
end
end
rake routes|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