我正在開發的應用程序涉及三件事情:報告,部分和作者。HABTM模型和動態表單
報告has_many部分和作家。部分和作者之間有HABTM的關係,因爲作者可以選擇寫幾個部分,而部分可以寫很多文章。
我有它顯示的方式是這樣的:
- 報告
- 第1
- 作家1
- 器2
- 第2
- 寫入器1
- 器3
- 第三節
- 寫器4
- 器2
- 第1
我能做到這一點很容易地足以在索引中。我的問題是在view/writers/_form.html.erb
中的表單。
當一個作家被創建時,我想把作者分配給1)一個項目和2)一個部分。
我其實大部分都使用複選框。
<%= f.label :report_id %><br />
<%= f.collection_select :report_id, Report.all, :id, :name %>
<%= f.label "Section" %><br />
<% Section.order(:name).all.each do |section| %>
<%= check_box_tag "writer[section_ids][]", section.id, @writer.section_ids.include?(section.id) %>
<%= section.name %><br />
<% end %>
但是,這給我的問題。這樣,顯示所有報告中的所有部分。我不想要這個。所以我把它改爲:
<% Section.order(:name).where(report_id:@writer.report_id).each do |section| %>
但是這樣,當創建一個新的寫入器時,不會出現部分複選框。它只在編輯頁面出現,編輯器已經保存並且已經分配給他們的報告。
它是有道理的,爲什麼它這樣做,但有什麼辦法可以讓報告被選中後「分配」,所以適當的部分?
我試圖跟蹤Ryan Bates的Railcast在http://railscasts.com/episodes/88-dynamic-select-menus-revised,但他的作品有兩個collection_select領域,模型協會是不會互相一模一樣..
是的,我不知道足夠的JavaScript來完成一步。我最後只是在Show頁面上顯示部分表單(用戶在創建操作之後重定向到的),以便他們可以勾選複選框。不是我喜歡的,但現在足夠好。 – cdotfeli 2011-12-26 08:33:55