Я использую simple_form
, известный камень Rails, который делает формы немного проще. У меня возникли проблемы с редактированием форм. Я могу сохранить записи отлично, но когда я перехожу к действию 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 %>
Да, я разрешая ids
в params.require(...)
. Запись сохранена отлично, я вижу ее в rails console
.
Когда я перехожу на эту страницу edit
, я могу видеть информацию о члене уже в text_field
, но я не вижу информацию о @member.academic.major
.
Кроме того, если я перейду на страницу редактирования и вернусь в браузере, запись academic
будет удалена загадочно.
Любая помощь будет оценена. Спасибо.
большое спасибо, сработал отлично! Я думал, что с помощью '@ academy 'форма каким-то образом получит данные объекта, как это происходит с' @member = Member.find (id) '. Еще раз спасибо! –
Добро пожаловать! –