मेरे पास कार्यालयों की सूची वाला एक वेबपेज है। वर्तमान में मैं एक कार्यालय को संपादित/जोड़ने/हटाने के लिए तीन फॉर्म बनाने की कोशिश कर रहा हूं। यह वही है जो मेरे पास है:

एक मॉडल:

class ChangeOfficeAddress < ApplicationRecord
  belongs_to :office
  belongs_to :insurer
  belongs_to :city
  VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
  validates_presence_of :email
  validates_format_of :email, with: VALID_EMAIL_REGEX
  validates_presence_of :edit_office_address
  validates_presence_of :add_office_address
  validates_presence_of :delete_office_address
  validates_presence_of :city_id
  validates_presence_of :insurer_id
  validates_presence_of :name
end

एक दृश्य में मेरे पास आंशिक रूप से मेरे मॉडल हैं:

<div id="addModal" class="modal fade" role="dialog" tabindex="-1" aria-hidden="true">
  <div class="modal-dialog">

    <!-- Modal content-->
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <div class="text-center">
          <div class="btn-group topbar header-buttons" role="group" aria-label="...">
            <%= link_to 'Add', '#', class: 'btn btn-default disabled' %>
            <%= link_to 'Edit', '#editModal', { 'class' => 'btn btn-default', 'data-toggle' => 'modal', 'data-dismiss' => 'modal' } %>
            <%= link_to 'Delete', '#deleteModal', { 'class' => 'btn btn-default', 'data-toggle' => 'modal', 'data-dismiss' => 'modal' } %>
          </div>
        </div>
      </div>
      <div class="modal-body">
        <%= form_for (@change_office_address), remote: true, format: :json, html: { class: :contact_form } do |f| %>
          <div id="error_explanation" style='display:none;' class="bg-danger text-danger alert fade in alert-danger alert-dismissable errors">
            <ul>
              <% if @change_office_address.errors.any? %>
                <% @change_office_address.errors.full_messages.each do |msg| %>
                  <li><%= msg %></li>
                <% end %>
              <% end %>
            </ul>
          </div>
          <%= f.text_field :name, placeholder: 'Name', class: 'form-control' %>

          <br>
          <%= f.text_field :email, placeholder: 'e-mail', class: 'form-control' %> <br>
          <%= f.label :city_id %>
          <%= f.collection_select :city_id, City.order(:name), :id, :name,
                                  { include_blank: true }, { class: 'form-control' } %>
          <br>
          <%= f.label :insurer_id, 'Insurer' %>
          <%= f.collection_select :insurer_id, Insurer.order(:short_name), :id, :short_name,
                                  { include_blank: true }, { class: 'form-control' } %>
          <br>
          <%= f.text_area :add_office_address, placeholder: 'Add address', class: 'form-control', cols: '30',
                          rows: '5' %> <br>
          <div class="text-center">
            <%= f.submit, class: 'btn btn-default' %>
          </div>
        <% end %>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
      </div>
    </div>

  </div>
</div>

और दो अन्य मोडल, उनके बीच एकमात्र अंतर यह है कि :add_office_address को :edit_office_address और :delete_office_address से प्रतिस्थापित किया जाता है।

जब मॉडल में कोई सत्यापन नहीं होता है, तो फॉर्म सबमिट हो जाता है, और सब कुछ ठीक है, लेकिन जब मैं :add_office_address, :edit_office_address और :delete_office_address में सत्यापन जोड़ता हूं, तो सत्यापन पास नहीं होता है, कारण ये फ़ील्ड (मेरा मतलब :edit_office_address, :delete_office_address या :add_office_address) खाली हैं।

मैं अलग-अलग रूप कैसे बना सकता हूं? आगे धन्यवाद!

0
Alex Zakruzhetskyi 5 जुलाई 2016, 13:34

1 उत्तर

सबसे बढ़िया उत्तर

किसी संदर्भ में, [add|edit|delete]_office_address के लिए अलग-अलग क्षेत्रों के कारण क्या हैं?

हालांकि, अपनी समस्या को हल करने के लिए, आपको शायद कुछ ऐसा करना चाहिए:

class ChangeOfficeAddress < ApplicationRecord
  belongs_to :office
  belongs_to :insurer
  belongs_to :city
  VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
  validates_presence_of :email
  validates_format_of :email, with: VALID_EMAIL_REGEX
  validates_presence_of :edit_office_address, if: :edit_office_address_changed?
  validates_presence_of :add_office_address, if: :add_office_address_changed?
  validates_presence_of :delete_office_address, if: :delete_office_address_changed?
  validates_presence_of :city_id
  validates_presence_of :insurer_id
  validates_presence_of :name
end

मुझे बताएं कि क्या वह काम करता है।

1
oreoluwa 5 जुलाई 2016, 13:51