1

私が達成しようとしているのは、プロジェクトのリストをドロップダウン メニューに表示して、そのドロップダウンからプロジェクトを選択すると、そのプロジェクトに関連するタスクなどだけが他のページに表示されるようにすることです。そのプロジェクトのショービューにボタンを配置することで問題なく動作しましたが、ユーザーがこの方法で選択できると、はるかに速くなります。

以下のコードは、インデックス ビューでこれまでに得たものを示しています (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
4

2 に答える 2

0

実際のコードを投稿したかどうかはわかりませんが、IDに不一致があります。

<%= collection_select(:project, :id, Project.all, :id, :name) %>
<%= link_to "Show", @project, id: "show_project_btn" %> # this should be id: "show_project_button"
<%= link_to "Select" select_project_project_path(@project), id: "select_project_btn" %> # and this should be id: "select_project_button", right?

<script type="javascript">
  $('#project_id').change(function(){
    var project_id = $(this).val();
    $('#show_project_button').attr('href', '/project/' + project_id);
    $('#select_project_button').attr('href', '/projects/' + project_id + '/select_project');
  })
</script>

また、JavaScriptに一貫性のないパスがあります

$('#show_project_button').attr('href', '/project/' + project_id); // rails generates /projects, I think
于 2012-07-04T09:11:46.910 に答える
0

@project が空のように見えるため、ID が見つかりません。

コントローラーのこの行を次のように変更します。

@project = Project.find(params[:id])

また、プロジェクトが見つからない場合にどうなるかを考慮する必要があります。これが発生すると、今と同じ問題が発生します。

于 2012-07-04T09:10:35.570 に答える