I would like to implement it so that I can update records of multiple models in one form, but the label notation is not reflected well.
The model and controller have the following code because we want to store the records in the time_tables
table and the records in the artists table
at the same time.
class TimeTable <ApplicationRecord
has_many:schedule# Multiple schedules (intermediate table)
has_many:artists,through::schedules# Multiple Artists with Schedules in Intermediate Model
belongs_to — Belongs to the user#User model
validates_associated —Run validation of the artists#Artist model
accepts_nested_attributes_for:artists,allow_destroy:true#You can update and delete the Artist model
end
def new
@time_table=TimeTable.new
10.times do
@time_table.artists.build
end
end
I didn't know how to register in bulk, so I tried to create a model for the artist table 10 times using times.do.
The erb file is written as follows, but since loop statements are used, there can be more than one form field, but the labels are all the same.
# Excerpt
<div class="form-row">
<%=f.fields_for: artists do | a | %>
<div class='form-group'>
<%=a.label:name, '10:00'%>
<%=a.text_field:name,class:'form-control'%>
</div>
<%end%>
I would like to create a label that matches each form without looping the label, but I don't know how to implement it, so please let me know.
ruby-on-rails ruby
First of all, accepts_nested_attributes_for is a feature provided by Rails, but it is a highly disliked semi-recommended feature.
https://github.com/rails/rails/pull/26976#discussion_r87855694
I'd like to kill acceptance_nested_attributes_for due time.
So
I think it's desirable that
If you could use accepts_nested_attributes_for to achieve this
First of all, accepts_nested_attributes_for is a feature provided by Rails, but it is a highly disliked semi-recommended feature
I think it's desirable that
If you could use accepts_nested_attributes_for to achieve this
#config/routes.rb
Rails.application.routes.drawdo
resources 'foos'
end
# app/models/foo.rb
class Foo<ApplicationRecord
has_many —bar,
dependent: —destroy
accepts_nested_attributes_for:bar,
allow_destroy —true
# fields_for to accepts_nested_attributes_for +has_many
# necessary to communicate that it is a combinations
defbars_attributes=(attributes)
end
end
# app/models/bar.rb
class Bar <ApplicationRecord
belongs_to: foo,
optional —true
end
# app/controllers/foos_controller.rb
class FoosController <ApplicationController
def new
@foo=Foo.new
# create a three-coco element
@f oo.bar.build
@f oo.bar.build
@f oo.bar.build
end
def create
params.permit!
@foo=Foo.new (params[:foo])
@foo.save!
end
end
<%#app/views/foos/new.html.erb%>
<%=form_with(model:@foo)do|f|%>
<ul>
<%=f.fields_for(:bar,:bar){|f_bar|%>
<li>index:<%=f_bar.index%>/li>
<li>name:<%=f_bar.text_field:name%>/li>
<%}%>
</ul>
<%=submit_tag%>
<%end%>
<%#app/views/foos/create.html.erb%>
<%@f oo.bar.each {|bar|%>
<p><%=bar.name%>/p>
<%}%>
I think it will be like this
To be honest, I wrote this code while reading the source code of fields_for, so it could be broken in any version upgrade.
Accepts_nested_attributes_for should not be used
© 2024 OneMinuteCode. All rights reserved.