簡體   English   中英

Rails-嵌套表格-2級

[英]Rails - Nested form - 2 levels

我想按照這個想法建立一個表格:

  • 我有工作分配,活動,任務,工作分配活動,活動任務和工作分配活動模型
  • 1個作業有很多活動,而1個活動有很多任務

    • (以下之間存在多對多關系:
      • 作業-活動
      • AssignmentActivity-任務,
    • 以及一對多關系:
      • 活動-任務)

我使用以下想法制作了“分配活動”表格: 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM