[英]Rails - Nested form - 2 levels
我想按照這個想法建立一個表格:
1個作業有很多活動,而1個活動有很多任務
我使用以下想法制作了“分配活動”表格: http : //railscasts.com/episodes/17-habtm-checkboxes
表格看起來像這樣
_form.html.erb
<% form_for @assignment do |f|%>
<% Activity.all.each do |a|%>
<% check_box_tag "assignment[activity_ids][]", a.id, @assignment.activity_ids.include?(a.id)%> | <% a.name%>
<%end%>
<%end%>
因此,它將所有檢查過的活動保存在作業中。
當我嘗試在此表單中添加保存任務的功能時,問題就來了。 這就是我嘗試過的
_form.html.erb
<% form_for @assignment do |f|%>
<% Activity.all.each do |a|%>
<%= check_box_tag "assignment[activity_ids][]", a.id, @assignment.activity_ids.include?(a.id)%> | <% a.name%> <br>
<% a.tasks.each do |t|%>
#THIS
<% check_box_tag "assignment[activity_ids][][]", t.id, "Something here"%><br>
<%end%>
<%end%>
<%end%>
但是我不確定如何在注釋后寫這一行。
因此,在保存時,應將作業和任務保存在分配中
有辦法嗎?
提前致謝
哈維爾QQ
您可以嘗試將工作分配ID作為參數傳遞,並使用Helper方法將對象保存在多個模型中。 在ActionView :: Helpers API中,您可以看到以下內容:
check_box(object_name, method, options = {}, checked_value = "1", unchecked_value = "0")
因此,也許可以在您的代碼塊中嘗試以下操作:
<% check_box_tag "assignment[activity_ids][][]", propagate(t.id)%>
並在您的AssignmentHelper.rb中,嘗試實現一種稱為“傳播”的方法:
def propagate(id)
*Fetch the id of Activity
*Fetch the id of Task
*Save both objects
end
希望這可以幫助。
我建議ryanb的nested_forms。 它會照顧您要真正好快地做的事情。
您不需要使用任何外部庫,因為Rails可以很好地處理嵌套表單。
習慣使用fields_for,您的問題將得到解決。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.