我想要實現的是在下拉菜單中有一個項目列表,以便當從該下拉列表中選擇一個項目時,只有與該項目相關的任務等顯示在其他頁面上。通過在該項目的顯示視圖中使用按鈕,我可以很好地工作,但如果用戶可以這樣選擇,它會快得多。Rails-id沒有從下拉列表中傳遞到鏈接
下面的代碼顯示了我到目前爲止在索引視圖中的內容(謝謝cutalion!) - 似乎是問題的線是第三個 - 選擇鏈接。它給出的錯誤是它無法找到沒有ID的項目。當頁面顯示時(當我刪除該行時),在下拉列表中列出了一個項目 - 那爲什麼這個ID沒有通過?此外,從代碼中刪除第三行以顯示頁面時,由第二行生成的鏈接指向索引視圖而非show視圖。我猜這是所有與ID沒有通過,但我不知道如何解決它!
任何人都可以擺脫這種光很好,謝謝!
項目/索引視圖(代碼更新爲校正inconsistancies):
<%= 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
謝謝,我已經改變了控制器代碼,它仍然會出現錯誤'找不到沒有ID的項目'。至於如果無法找到項目會發生什麼情況,只能使用db中的項目填充下拉菜單 - 那麼會發生什麼情況?如果是這樣,我想我可以做一些救援? – ecs
只需在視圖的第一行添加<%raise @ project.inspect%>即可檢查項目變量。你是否從索引控制器的數據庫中獲得所有項目並將其存儲到@project? –