Я попытался включить частичное в модальное что-то похожее на это Rails Admin когда вы нажимаете «создать язык».
Теперь, когда я еще не совсем понял, как там работает код, я попытался смешать этот Rails — AJAX модальный диалог? и что-то свое.
Дело в том, что частичное теперь отображается в модальное. Но когда я нажму «сохранить», проверка вернется к «нормальному» представлению создания нового и не покажет ошибки проверки непосредственно в модальном окне.
Как я могу напрямую отображать ошибки проверки во всплывающем модальном окне?
Когда я сохраняю, я должен каким-то образом различать сохранение из этого модального окна и обычное сохранение, так как это частичное будет вызываться откуда-то еще, и мне нужно будет установить новый созданный объект непосредственно как новый объект в раскрывающемся списке. Я предполагаю, что мне нужно будет отличить формат ответа, а затем использовать JS, чтобы установить новый идентификатор в идентификатор DropDown?
Вот некоторый код, написанный до сих пор. В представлении, где я включаю частичное, это выглядит так, когда я вызываю другой контроллер (поскольку я нахожусь в другом новом представлении контроллеров).
$.get('<%= url_for :controller => 'customers', :action => 'new' %>',
function(data) {
$('#customer-modal').html(data);
}
);
Затем новый в контроллере «customres» различает другой формат запроса и отображает другой частичный (в данном случае «_ajax_form.html.erb»):
if request.xhr?
render "_ajax_form", :layout => false
В этом фрагменте я использую "simple_form_for @customer, :remote => true do |f]....", поэтому я предполагаю, что в конце отправка должна выглядеть иначе, чем стандартная, так как это вызывает обычное "создание" на контроллер?
<div class="modal-footer">
<%= f.button :submit, :class => 'btn primary' %>
<a id='cancel-form' class= "btn small info">cancel</a>
</div>
Спасибо за любую помощь, которая разъясняет, что я делаю неправильно или как это должно быть сделано, поскольку мой опыт работы с Rails и JS/AXAX еще не слишком велик.. ;)
- EDITED: теперь у меня есть версия, в которой в моей специальной части, которая загружается в модальном окне, будет вызываться отдельное действие под названием "new_from_sale" в simple_form_for:
simple_form_for @customer, :url => url_for(:action => 'new_from_sale', :controller => 'customers') do |f|
Затем в контроллере, когда сохранение этого нового объекта в порядке, я перенаправляюсь на первое вызванное представление с новым идентификатором в качестве параметра, который затем заполняет раскрывающийся список. В другом случае, когда новый объект не может быть сохранен, мне нужно как-то показать ошибки в этом модальном окне. Пока что обе попытки либо напрямую отобразить частичный render :partial => "customers/ajax_form"
, либо вернуть JS-код render :js => "$('#sale_customer_id').val(#{@customer.id});"
еще не сработали... но я буду продолжать испытывать удачу..