1
我正在使用simple_form
,這是一種已知的Rails gem,可以使表單更容易一些。我無法編輯表單。我可以完美地保存記錄,但是當我轉到edit
操作時,我看不到數據庫中嵌套對象的記錄。關於編輯嵌套表格的問題
模型
# app/models/user.rb
has_one :member
has_one :academic, through: :member
accepts_nested_attributes_for :member, reject_if: :all_blank
# app/models/member.rb
belongs_to :user
has_one academic, dependent: :delete
accepts_nested_attributes_for academic, allow_destroy: true, reject_if: :all_blank
# app/models/academic.rb
belongs_to :member
控制器
# app/controllers/member_controller.rb
def edit
@member = Member.find(params[:id])
@academic = Academic.find_by_member_id(params[:id])
@member.build_academic
@member.academic.build_exchange_student # ExchangeStudent belongs_to :academic also
end
查看
# app/views/_form.html.erb partial on app/views/edit.html.erb
<%= simple_form_for @member, url: database_members_path do |f| %>
<%= f.fields_for :academic do |academic_exchange_student| %>
<%= academic_exchange_student.fields_for :exchange_student do |exchange| %>
<!-- ##### Exchange student -->
<div class="row">
<%= academic_exchange_student.text_field :major%>
</div>
<% end %>
<% end %>
是的,我允許在params.require(...)
的ids
。記錄保存完好,我可以在rails console
中看到它。
當我轉到此edit
頁面時,我可以看到已在text_field
中的成員的信息,但我沒有在那裏看到@member.academic.major
的信息。
此外,如果我到編輯頁面並在瀏覽器中返回,則會以神祕方式刪除academic
記錄。
任何幫助將不勝感激。謝謝。
非常感謝你,工作完美!我認爲使用'@ academic',表單會以某種方式獲取對象的數據,就像它使用'@member = Member.find(id)'一樣。再次感謝! –
不客氣! –