1

現時点では、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
4

2 に答える 2

0

どのようにそのことについて?

<%= collection_select :project, :id, Project.all, :id, :name %>
<%= link_to "Show", @project, id: "show_project_btn" %>
<%= link_to "Select" select_project_project_path(@project), id: "select_project_btn" %>

<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>
于 2012-07-03T11:26:21.413 に答える