現時点では、projects/index ビューにプロジェクトのリストがあります。ユーザーが現在しなければならないことは、プロジェクトの [表示] をクリックしてから、[プロジェクトの選択] をクリックすることです。これにより、コントローラーで作成したカスタム アクションが呼び出され、プロジェクトの ID がセッションに渡されるため、関連するタスクなどのみが次のページに表示されます。
私がやりたいことは、インデックス ビューにドロップダウン メニューを表示し、すべてのプロジェクトのリストを表示することです。次に、送信ボタンをクリックすると、まったく同じように、そのプロジェクトの ID がセッションに渡されます。これを行うと考えられるあらゆる方法を試しましたが、何も機能しません。主に、プロジェクトのIDがドロップダウンから渡されていないように見えるためです。
私の質問は、ドロップダウン メニューのプロジェクトから ID を取得し、それをセッションに渡すカスタム アクションを呼び出す送信ボタンを取得するにはどうすればよいですか?
コントローラーのインデックス アクションにコードを追加する必要があるかどうか、または送信ボタンがカスタム アクションを呼び出すことができるかどうかはわかりません。私はレールにかなり慣れていないので、より多くの人が説明できるほど良いです!!
プロジェクト/インデックスは次のとおりです。
<%= form_for(@project) do |f| %>
<% if @project.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@project.errors.count, "error") %> prohibited this project from being saved:</h2>
<ul>
<% @project.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.hidden_field :company_id, :value => session[:company_id] %>
</div>
<div class="field">
<%= collection_select :project, :id, Project.all, :id, :name %>
</div>
<div class="actions">
<%= f.submit 'Select Project', :class => "btn btn-primary" %>
</div>
<% end %>
これまでのコントローラーコード:
def index
@projects = Project.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @projects }
end
end
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
置けない
@project = Project.find(params[:id])
そうしないと、ID のないプロジェクトを見つけることができないと表示されます。