2013-06-19 4 views
0

У меня есть форма событий, у которой есть выбор для выпадающих мест. В настоящее время, если новое мероприятие должно быть добавлено к событию, пользователи должны перейти в форму места проведения, создать свое место, а затем вернуться к форме событий, которая не идеальна.Rails Ajax Form, чтобы добавить новую связанную запись

Я получил эту работу через AJAX, но это не совсем так. У меня есть ссылка на форму моих событий, которая вызывает модальный (twitter bootstrap), содержащий форму места проведения. Форма места проведения была установлена ​​в :remote => true, и на отправке она создает новое место, но модальная форма не закрывается, а выбор места проведения мероприятия не обновляется. Мне нужно вручную обновить страницу, чтобы подтвердить добавление нового места.

VenueController создавать действия выглядит следующим образом, с реагировать на заходящих format.js

def create 
    session[:return_to] ||= request.referer 
    @venue = Venue.new(params[:venue]) 

    respond_to do |format| 
     if @venue.save 
     format.js 
     else 
     format.html { render :action => "new" } 
     end 
    end 
    end 

В приложение/просмотров/мест у меня есть create.js.erb, который выглядит следующим образом:

$('#townvenue').html("<%= escape_javascript(render(@town_venue)) %>"); 

(Я почти уверен, что именно здесь я ошибаюсь).

#townvenue является DIV в моей форме событий и сам частично расположен в приложение/просмотров/События/_town_venue.html.erb

<div id="townvenue"> 
<div> 
    <%= f.label :town_id, :class => 'control-label form_labels' %> 
    <%= f.collection_select :town_id, Town.order(:town), :id, :town, include_blank: true %> 
</div> 

<div> 
    <%= f.label :venue_id, "Venue", :class => 'control-label form_labels' %> 
    <%= f.grouped_collection_select :venue_id, Town.order(:town), :venues, :town, :id, :name, include_blank: true %><br /><a href="#myModal" role="button" data-toggle="modal">[Add new venue]</a><br /> 
</div> 
</div> 

Может кто-нибудь помочь с последними частями в этой головоломке, пожалуйста?

ответ

0

Это всего лишь намек. Получите свой идентификатор выбора и добавьте к нему свое новое место с $('#select_box_id').append('<option value="<%= venue.value %>"><%= venue.name %></option>') в вашем файле .js.erb.

+0

Теперь это выглядит очевидно, и я вижу, как это будет работать. Тем не менее, я пробовал его с использованием правильного идентификатора, и он, похоже, ничего не делает. Есть ли что-нибудь, что я могу сделать, чтобы подтвердить, что файл create.js.erb определенно называется правильно? – Raoot

+0

Имеет ли значение, что параметры находятся в пределах групп opt? – Raoot

+0

Да, вы должны добавить в optgroup, а не в меню выбора. – Vilelm

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