1

我的形式導軌 - 更新多個資源項目與一個鏈接

<% @group.lessons.each do |lesson| %> 
    <%= form_for [@group, lesson] do |f| %> 
    <tr id='<%= lesson.id%>' > 
     <td><%= f.text_field :time %></td> 
     <td><%= f.text_field :day %></td> 
     <td><%= f.text_field :subject %></td> 
     <td><%= f.text_field :teacher %></td> 
     <td><%= f.text_field :room %></td> 
     <td><%= f.submit 'Update'%></td> 
     <td><%= link_to 'Delete', [lesson.group, lesson], method: :delete%></td> 
    </tr> 
    <%end%> 
<%end%> 

每個表單更新,點擊「更新」按鈕,當一個條目的表。但是,當您編輯兩個條目並僅更新一個條目時,您在另一個條目中編輯的信息就消失了。

我想要一個按鈕來更新表中的每個條目。我該怎麼做呢?

+1

爲什麼你不只是使用嵌套屬性的教訓? – CodeGroover

+0

如果您有更好的一般解決方案,請回復。我不明白你在問什麼。 – Euphe

+2

假設組和課是兩個模型,它們是以任何方式關聯的嗎? – weltschmerz

回答

1

我認爲這是一個比問題更多的html問題。您無法使用純html提交多個表單。這就是爲什麼當你提交其他表單時你失去了一種表單。

但是,您可以做的是使用嵌套屬性更新屬於同一組的多個課程。這裏有一些資源爲:

+0

的解決方案。這個問題試圖學習表單提交的模式,而不是Rails的功能。 –

2

更新:

首先模型:

class Group < AR::Base # possibly you'r using ActiveRecord 

    attr_accessible :lessons_attributes 
    accepts_nested_attributes_for :lessons, :allow_destroy => true 

    has_many :lessons 

end 

然後在您看來:#例如意見/組/ _form.html.erb

<table> 
    <%= form_for @group do |f| %> 
     <%= f.error_messages %> 
     <%= f.fields_for :lessons do |lesson_form| %> 
     <%= render "lessons/lesson", :f => lesson_form%> 
     <% end %> 
    <tr><td><%= f.submit 'Update'%></td></tr> 
    <% end %> 
</table> 

和意見/經驗/ _lesson.html.erb

<tr> 
    <td> 
    <%= f.text_field :subject %> 
    <%= f.check_box :_destroy %> 
    <%= f.label :_destroy, "Remove Lesson" %> 
    </td> 
</tr> 
+0

但什麼是「原始」的方式來做到這一點?我的意思是沒有寶石。我想知道爲了學習的緣故 – Euphe

+1

@Euphe檢查更新版本。 – CodeGroover