私が達成しようとしているのは、プロジェクトのリストをドロップダウン メニューに表示して、そのドロップダウンからプロジェクトを選択すると、そのプロジェクトに関連するタスクなどだけが他のページに表示されるようにすることです。そのプロジェクトのショービューにボタンを配置することで問題なく動作しましたが、ユーザーがこの方法で選択できると、はるかに速くなります。
以下のコードは、インデックス ビューでこれまでに得たものを示しています (cutalion のおかげでもあります!) - 問題があると思われる行は 3 番目の行 - 選択リンクです。それが与えているエラーは、ID なしでプロジェクトを見つけることができないということです。ページが表示されたとき (その行を削除したとき)、ドロップダウンにリストされているプロジェクトがあります。では、ID が渡されないのはなぜですか? さらに、ページを表示するコードから 3 行目を削除すると、2 行目によって生成されるリンクは、表示ビューではなくインデックス ビューを指します。これはIDが渡されないことに関係していると思いますが、修正方法がわかりません!
誰かがこれに当てることができる光は素晴らしいでしょう、ありがとう!
プロジェクト/インデックス ビュー (矛盾を修正するためにコードを更新):
<%= collection_select(:project, :id, Project.all, :id, :name) %>
<%= link_to 'Show', @project, :id => "show_project_button" %>
<%= link_to "Select" select_project_project_path(@project), id: "select_project_button" %>
<script type="javascript">
$('#project_id option').change(function(){
var project_id = $(this).val();
$('#show_project_button').attr('href', '/projects/' + project_id);
$('#select_project_button').attr('href', '/projects/' + project_id + '/select_project');
})
</script>
また、プロジェクト コントローラーの select_project アクション:
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