2010-05-12 142 views
1

這很難解釋,但是在這裏。我有一個包含學生,課程,作業和成績的Rails應用程序填充Rails表單字段

在學生表演視圖中,列出了學生需要的所有課程以及與這些課程相關的作業。在學生和作業之間有記錄成績的所有作業也說明了成績,其他成績都顯示爲「不適用」。我想要做的是鏈接到一個表格,學生和分配字段預填充,具體取決於點擊的鏈接。

這裏是一個例子。彼得帕克有'數學考試'的成績,但不是'數學CW'的成績。如果用戶點擊「添加」鏈接,我希望顯示一個視圖,並在表單中預先填入學生姓名和作業名稱,以便添加成績。

alt text http://img695.imageshack.us/img695/7540/screenshot20100512at180.png

我基本不知道如何以最佳方式這個數據傳遞到形式,或者如何有表單無法修改的方式顯示數據。

謝謝。

回答

3

傑克,你在這裏有幾個問題,其中之一是比較容易顯示無法修改的方式中的數據,你可以把它禁用

http://www.w3.org/TR/html401/interact/forms.html#h-17.12

如何通過student_id數據和assignment_id到表格?該系統只會在本地使用,但我會確認一切。 - 傑克

傑克,你將需要在你當前視圖中的東西,可以傳遞student_id和assignment_id。像link_to。

<%= link_to "show me my assignments", {:action => 'show', :controller => "assignments"}, :student_id => student.id, :assignment_id => student.assignment[0].id %> 

(注意它可能是更好的使用寧靜的路線,但是這顯示出較好的是怎麼回事)

一下這個鏈接會做的就是調用分配控制器的表演動作。您可以通過調用獲得ID的控制器:

assignment_id = params[:assignment_id] 
student_id = params[:student_id] 
@student = Student.find(:first, :conditions {:id => student_id}) 
... 

然後在/ app /視圖/任務/目錄下的show.html.erb你需要使你的表單代碼,類似:

<%= form_for @student, :student ... 

我掩飾了很多很多可能性,你問的問題有點寬泛。將它分成更小的塊(更少關注應用程序,更多關注單個動作)並重新詢問論壇成員可能會更有幫助。

你可以多問一下:

  • 將數據發送到控制器從 鏈接
  • 從 查找數據庫中的項目控制器
  • 生成從實例的形式 變量在控制器
  • 最後禁用text_field中的 表

我會說給我提出了一個鏡頭(從視圖發送數據到控制器,然後使用控制器中的數據來渲染另一個視圖),如果你找不到什麼東西,試着問一個問題關於你遇到的問題非常集中的問題,你可能會得到更好的產品。

+1

snowmaninthesun在這裏是正確的軌道,*但*不要使表格字段「禁用」 - 使它「只讀」。禁用輸入的不同之處在於它們不提供**值。 – nfm 2010-05-12 22:46:33

+0

非常感謝您的回答snowmaninthesun - 真的很感激它,我設法在大約10分鐘內使用您的答案中的指針來工作。頭號人物 – Jack 2010-05-13 09:21:44

1

我只是鏈接到表單並傳遞student_id和assignment_id。您無法真正將表單字段設置爲「不可編輯」,但您可以在顯示和保存信息之前驗證該用戶是否有權查看/編輯。

+1

技術更正。您可以禁用表單字段,但絕對不應該相信來自它的數據不會改變。 – Anna 2010-05-12 17:52:35

+0

如何將student_id和assignment_id傳遞給表單?該系統只會在本地使用,但我會確認一切。 – Jack 2010-05-12 19:28:34