2016-05-19 1 views
2

У меня есть модальный, который отображает ошибки проверки. Моя проблема заключается в том, что каждый раз, когда я закрываю модальный метод и запускаю его снова, он дублируется, и я должен закрыть его дважды.Rails Semantic UI Modal Создание дополнительных элементов Dom

Проблема заключается в том же, как это: StackOverflow: PHP Semantic-UI Modal

Это решение не работает. Я не уверен, что это проблема с тем, как рельсы обрабатывают частичные, или если я реализую модальные ошибки. Мне нужна помощь в понимании того, что происходит и как я могу это исправить.

index.html

<div class="eight wide stackable column"> 
    <div id="payee_errors"></div> 
</div> 

ошибка парциальное:

<div class="ui modal"> 
    <div class="header"><%= pluralize(target.errors.count, "error") %> prohibited this <%= target.class.to_s.underscore.humanize.downcase %> from being saved:</div> 
    <div class="content"> 
    <h3 class="header"> 
     There were problems with the following fields: 
    </h3> 
    <div class="ui list"> 
     <% target.errors.full_messages.each do |msg| %> 
      <div class="item"> 
      <%= msg %> 
      </div> 
     <% end %> 
    </div> 
    </div> 
    <div class="actions"> 
    <div class="ui green cancel button">Ok. It won't happen again.  </div> 
    </div> 
</div> 

create.js.coffee

$("#payee_errors").html("<%=escape_javascript(render partial: 'errors' , :locals => {:target => @payee }) %>") 
$('.ui .modal').modal('show') 

Edit:

Ответ ниже присылал меня в правильном направлении. Вот что я в итоге сделал. Единственное различие между его ответом заключалось в том, что мне пришлось скрыть модальный метод, используя метод обратного вызова onApprove.

$('.ui.modal').html('') 
$("#payee_errors").html("<%=escape_javascript(render partial: 'errors/errors' , :locals => {:target => @payee }) %>") 
$('.ui.modal').modal(
    onApprove: -> 
    $('.ui.modal').modal 'hide' 
    return 
).modal 'show' 

ответ

2

Проблема в том, что когда вы закрываете модальный, вы просто скрываете его, не разрушая созданный вами контент.

Раствор для очистки DIV перед закрытием, как это:

$('.ui .modal').html('') 
$('.ui .modal').modal('hide') 
+0

Ваш ответ послал меня в правильном направлении. Я пытался использовать чистый, пустой или любой метод JQuery, который мог найти. Я никогда не думал о том, чтобы установить весь модальный div в пустую строку. В итоге мне пришлось называть 'hide' методом обратного вызова, это единственное, что мне пришлось делать по-другому. – ctilley79

Смежные вопросы