Mam bazę danych z wieloma tabelami. Jeden jest używany jako statyczne źródło informacji, które należy wprowadzić w innej tabeli. Stworzyłem formularz, w którym ta pierwsza tabela jest zapętlona i używana do budowy pól wejściowych. Te pole mają pole wyboru, i najlepiej, jeśli zaznaczono to pole wyboru, zapisze to pole do drugiej tabeli po przesłaniu.

Jednak nie zapisuje się w drugiej tabeli, podczas gdy reszta tej formy (zagnieżdżona forma).

Jak to się przychodzi? Nie otrzymuję żadnych błędów w dzienniku serwera.

Część _form. Zawiera łącznie 6 bloków takich jak i 2 inne bloki. Pozostałe bloki poprawnie zapisują:

 <div class="card">
          <div class="card-header" role="tab" id="headingTwo">
            <h5 class="mb-0">
              <a class="collapsed" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
                Product (vrij) verklaring
              </a>
            </h5>
          </div>
          <div id="collapseTwo" class="collapse" role="tabpanel" aria-labelledby="headingTwo">
            <div class="card-block">

              <%= f.fields_for :enquirymeasures do |em| %>

                  <%= Measurement.where(measurementtype: 'product verklaring').find_each do |m| %>

                      <%= f.fields_for :enquirymeasures, :html => {:multipart => true} do |em| %>
                          <%# em.hidden_field :measurementid, {:value => m.id} %>
                          <%= em.text_field :type, {:value => m.measurementtype} %>
                          <%= em.text_field :description, {:value => m.measurement} %>
                          <p>
                            <%= em.check_box :needed %>
                            <%= m.measurement %>


                          <hr>
                      <% end %>
                  <% end %>
                  <%= f.fields_for :enquirymeasures do |em| %>
                      <%= em.label :bijzonderheden %>
                      <%= em.text_field :other %></p>
                  <% end %>

                  <br>


                  </div>
                  </div>

              <% end %>
              </div>


        <%= f.fields_for :enquirymeasures do |em| %>
            <div class="card">
              <div class="card-header" role="tab" id="headingElektro">
                <h5 class="mb-0">
                  <a class="collapsed" data-toggle="collapse" data-parent="#accordion" href="#collapseElektro" aria-expanded="false" aria-controls="collapseElektro">
                    Elektrotechnische maatregelen
                  </a>
                </h5>
              </div>
              <div id="collapseElektro" class="collapse" role="tabpanel" aria-labelledby="headingElektro">
                <div class="card-block">
                  <%= Measurement.where(measurementtype: 'Elektrotechnisch').find_each do |m| %>

                      <%= f.fields_for :enquirymeasures, :html => {:multipart => true} do |em| %>
                          <%= em.hidden_field :measurementid, {:value => m.id} %>
                          <%= em.hidden_field :type, {:value => m.measurementtype} %>
                          <%= em.hidden_field :description, {:value => m.measurement} %>
                          <p><%= em.check_box :needed %> <%= m.measurement %>
                          <hr>
                      <% end %>
                  <% end %>
                  <%= f.fields_for :enquirymeasures do |em| %>
                      <%= em.label :bijzonderheden %>
                      <%= em.text_field :other %></p>
                  <% end %>
                </div>
              </div>
            </div>

        <% end %>
        </div>

Dozwolone atrybuty:

 def enquiry_params
      params.require(:enquiry).permit(:reference, :location, :description, :date, :amount, :approved, :status,
                                      enquirymeasures_attributes: [:id, :done, :needed, :measurement_id, :measurementid, :user, :other, :type, :description],
                                      tools_attributes: [:id, :handtool, :other, :motorvehicle, :compressor, :ramp, :scaffold, :crane, :ladder, :generator, :tankladder],
                                      applicant_attributes: [:id, :name, :email, :contractor_id, :company],
                                      signatures_attributes: [:id, :date, :representative_id],
                                      gasmeters_attributes: [:id, :date, :tester, :signature, :oxigen, :o_needed, :o_continu, :explosives, :e_needed, :e_continu, :mat1, :mat1_needed, :mat1_continu, :mat2, :mat2_needed, :mat2_continu, :mat3, :mat3_needed, :mat3_continu],
                                      controls_attributes: [:id, :enquirycheck, :workspacecheck, :enquiry_id],
                                      roles_attributes: [:name],
                                      user_attributes: [:id, :name, :company]).merge(user_id: current_user.id)
    end

Twórz funkcję

def create
    @enquiry.user_id = current_user.id
    @enquiry = Enquiry.new(enquiry_params)
    #@enquiry.enquirymeasures.build


    respond_to do |format|
      if @enquiry.save
        format.html { redirect_to @enquiry, notice: 'Enquiry was successfully created.' }
        format.json { render :show, status: :created, location: @enquiry }
      else
        format.html { render :new }
        format.json { render json: @enquiry.errors, status: :unprocessable_entity }
      end
    end
  end

Modele bazy danych:

table #1class Measurement < ActiveRecord::Base
  belongs_to :enquirymeasure

  belongs_to :enquiry

  def type_and_measurement
    "#{self.measurementtype} |"  " #{self.measurement}"
  end
end


table #2
class Enquirymeasure < ActiveRecord::Base
  belongs_to :enquiry
  has_many :measurements
  accepts_nested_attributes_for :measurements
end
0
Marco 16 luty 2017, 11:05

2 odpowiedzi

Najlepsza odpowiedź

I znalazłem rozwiązanie. Używałem: wpisz jako kolumnę w tabeli Enquirymaseasure. To, offcourse, nie działa ze względu na to, że jest to słowo Reserver i wszystko. (coś, co wiedziałem, ale po prostu nie myślałem o czymś lub czymś)

0
Marco 16 luty 2017, 10:45

Jeśli rozumiem swoje modele relacje poprawnie, wydaje mi się, że zapytanie jest model, który powinien mieć zagnieżdżone atrybuty do pomiaru, powinieneś

 pass accepts_nested_attributes_for :measurements

Od enquiryMeasure do zapytania

0
Joel_Blum 16 luty 2017, 08:39