2012-07-03 58 views
1

目前,我在項目/索引視圖中有一個項目列表。當您點擊項目旁邊的「顯示」時,它會轉到該項目的顯示視圖。在那裏,您可以點擊'選擇項目',並將該項目的ID傳遞到會話中,以便只有與該項目相關的相關任務纔會顯示在其他頁面中。Rails - 使用下拉菜單中的信息爲方法操作提供參數

我想要做的是有一個項目的下拉菜單(這樣你就不會看到所有項目的大型長表),並有兩個按鈕旁邊的下拉菜單 - 一個查看更多信息(即轉到該項目的顯示視圖),然後選擇'選擇項目'。我怎樣才能讓他們有正確的信息(即項目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 

UPDATE:

下面是相關航線:

resources :projects do 
    member do 
    post :select_project 
    end 
end 

耙路線的結果| 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 

回答

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> 
+0

這是用haml寫的嗎? Mine是一個.erb文件 - 我如何將其翻譯成工作?你的代碼看起來像我之後,謝謝! – ecs

+0

現在它是erb :) – cutalion

+0

謝謝!試了一下,我現在得到一個錯誤:沒有路線匹配{:action =>「select_project」,:controller =>「projects」,:id => nil} - 這是否意味着它沒有得到ID傳遞給它,還是可能是在初始頁面加載,沒有id被傳遞? – ecs

0

您可以創建和使用「秀」,並且不是基於項目的ID(不要使用Rails資源路線衝突)「選擇項目」的路線,並繼續該項目的ID發送到控制器的行爲作爲params對象的一部分。

在routes.rb中,

get 'show_project', to: 'projects#show' 
get 'select_project', to: 'projects#select_project' 

在您看來,使用像show_project_pathselect_project_path路徑名提交您的要求。

相關問題