Tôi là một người mới vấp ngã theo cách của mình thông qua việc tạo ứng dụng đường ray đầu tiên của tôi. Tôi đang cố gắng thêm nhiều bản ghi vào một bảng từ một biểu mẫu lồng nhau, và tại thời điểm này, chỉ có bản ghi cuối cùng đang được thêm vào.Thêm nhiều bản ghi trong Rails
Tôi đang làm việc trên một biểu mẫu cho phép người dùng kết hợp phương trình toán học với phương trình cần đọc theo quy tắc đọc đã cho. Trong chế độ xem tóm tắt, hai bản ghi đơn giản sẽ là:
equation: "x-3", readingRule:"Simple", transcription"x take away three"
equation: "x-3", readingRule:"Standard", transcription"x minus three"
Tôi có bốn bảng: 'phương trình', 'phiên âm', 'đọcRuleSets' và 'kiểm tra'. Một thử nghiệm đơn bao gồm các id của một phương trình, một phiên mã, và một readRuleSet.
Tôi có một biểu mẫu có trường văn bản để người dùng chọn id của phương trình và bốn trường văn bản (được kết hợp với bốn bộ quy tắc đọc của tôi) để chọn id của bản ghi âm. Khi tôi nhấn gửi, tôi muốn thêm bốn 'kiểm tra' mới, một cho mỗi phiên âm. Hiện tại, Rails chỉ đang thêm phần cuối cùng.
Tôi nghĩ đó là vì id của các trường văn bản giống nhau trong nguồn html. Tôi đã thử ghép tên trường với chỉ mục từ each_with_index, nhưng điều đó đã để lại cho tôi một bản ghi được thêm vào 'test' và read_rule_set_id là null vì tôi đã sửa đổi tên của cột bằng chỉ mục. Vì vậy, tôi đã thực hiện điều đó, đọc nhiều hơn, theo dõi các bản tin phát thanh 196, và tôi vẫn bị mắc kẹt.
bit có liên quan của mã:
\ ứng dụng \ mô hình \ 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
Ba bảng khác có tương ứng 'của belongs_to của họ.
\ ứng dụng \ xem \ xét nghiệm:
<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>
ứng dụng \ controllers \ 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