birden fazla kayıt ekleme Benim ilk raylar uygulama oluşturma yolumda tökezleyen bir yeni biriyim. İç içe geçmiş bir formdan bir tabloya birden çok kayıt eklemeye çalışıyorum ve şu anda yalnızca son kayıt ekleniyor.Rails
Bir kullanıcının bir matematik denklemini belirli bir okuma kuralı altında nasıl okunması gerektiği ile ilişkilendirmesine izin verecek bir form üzerinde çalışıyorum. soyut bir görünümde, iki basit kayıtlar şöyle olacaktır: 'denklemler', 'transkripsiyonları', 'readingRuleSets' ve 'testleri':
equation: "x-3", readingRule:"Simple", transcription"x take away three"
equation: "x-3", readingRule:"Standard", transcription"x minus three"
Dört tablolar var. Tek bir test, bir denklemin, bir transkripsiyonun ve bir readRuleSet'in kimliklerinden oluşur.
Kullanıcının, denklemin kimliğini seçmesi için bir metin alanı olan bir formum var ve bunlar, transkriptlerin kimliğini seçmeleri için dört metin alanı (dört okuma kural kümemle ilişkili). Gönderdiğimde, her bir transkripsiyon için bir tane olmak üzere dört yeni 'test' eklemek istiyorum. Şu anda, Rails sadece son olanı ekliyor.
Bunun nedeni, metin alanlarının kimliğinin html kaynağında aynı olmasıydı. Alan adını her_with_index dizini ile birleştirmeyi denedim, ancak bu bana 'sınama' eklenecek bir kayıt bıraktı ve read_rule_set_id null değerindeydi çünkü indeksle sütunun adını değiştirdim. Bu yüzden bunu daha çok okudum, demiryollarını 196 izledim ve hala sıkışıp kaldım. kod
İlgili bitleri: app \ modelleri \
\ test.rb
class Test < ActiveRecord::Base
has_many :equations
has_many :reading_rule_sets
has_many :transcriptions
accepts_nested_attributes_for :equations :transcriptions :reading_rule_sets
end
Diğer üç tablo kendi 'belongs_to' s var.
\ app \ görünümler \ testler:
<div>
<fieldset>
<legend> Reading Rules and Transcriptions </legend>
<% ReadingRuleSet.all.each_with_index do |rrs, index| %>
<div class="row">
<div class="col-md-6">
<label><%= rrs.name %></label>
</div>
<div class="col-md-6">
<%= f.text_field :transcription_id %>
<%= f.hidden_field :reading_rule_set_id, :value =>rrs.id %>
<!--# .to_s + index.to_s-->
</div>
</div>
<% end %>
</fieldset>
</div>
<div class="actions">
<%= f.submit %>
</div>
uygulama \ kontrolörleri \ tests_controller.rb
# POST /tests
# POST /tests.json
def create
@test = Test.new(test_params)
respond_to do |format|
if @test.save
format.html { redirect_to @test, notice: 'Test was successfully created.' }
format.json { render :show, status: :created, location: @test }
else
format.html { render :new }
format.json { render json: @test.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /tests/1
# PATCH/PUT /tests/1.json
def update
respond_to do |format|
if @test.update(test_params)
format.html { redirect_to @test, notice: 'Test was successfully updated.' }
format.json { render :show, status: :ok, location: @test }
else
format.html { render :edit }
format.json { render json: @test.errors, status: :unprocessable_entity }
end
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_test
@test = Test.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def test_params
params.require(:test).permit(:equation_id, :reading_rule_set_id, :transcription_id, :transcription_transcription)
end