У меня есть модальный бутстрап с ajax:
<%= link_to 'Question', new_question_path, remote: true, class: 'btn btn-info' %>
_form_modal.html.erb
<div class="modal fade" id="form_modal" tabindex='-1'>
<%= simple_form_for @question, remote: true, validate: true do |f| %>
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Question</h4>
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
</div>
<div class="modal-body">
<div class="form-inputs">
<%= f.input :content, label: false %>
</div>
</div>
<div class="modal-footer">
<%= f.button :submit, "Ask", class:" btn btn-primary" %>
</div>
</div>
</div>
<% end %>
</div>
new.js.erb
$('#remotecontainer').html('<%= j render "questions/form_modal", locals: { product: @product } %>');
$('#form_modal').on('shown.bs.modal', function() {
$('form[data-validate]').enableClientSideValidations();
}).modal();
Я получаю доступ к модалу через это: <div id='remotecontainer'></div>
Метод контроллера:
def new
@question = Question.new
end
def create
@question = Question.new(question_params)
respond_to do |format|
if @question.save
format.html { redirect_to root_path, notice: "Question was successfully sent!" }
else
format.js { render 'new.js.erb'}
end
end
end
У меня есть проверка внутри модели: validates_length_of :content, maximum: 70
И я использую следующие два гема для ошибок валидации:
gem 'client_side_validations'
gem 'client_side_validations-simple_form'
Появляется модальный формат, и, если я отправляю форму длиной менее 70 символов, создаются вопросы. Но с другой стороны, если я набираю более 70 символов, появляется ошибка проверки, и происходит что-то странное ... Если я набираю и повторно отправляю форму, содержащую менее 70 символов, она продолжает выдавать ошибку проверки и не дает позвольте мне отправить форму. Я мог бы что-то упустить здесь ... Так что есть идеи, как это исправить?
Обновление
Хорошо, я попробовал это .... Я добавил восклицательный знак в метод создания контроллера: if @question.save!
И я получаю ошибку проверки на консоли. Ошибка валидации вообще не отображается на модале. И затем, когда я пытаюсь отправить форму с меньшим количеством символов, чем 70, она проходит. Так что из моего понимания что-то не так с настройкой двух драгоценных камней. Кто-нибудь может помочь с этим?
(0.2ms) ROLLBACK
↳ app/controllers/questions_controller.rb:14
Completed 422 Unprocessable Entity in 10ms (ActiveRecord: 1.6ms)
ActiveRecord::RecordInvalid (Validation failed: Content is too long (maximum is 70 characters)):