Форма для выбора идентификатора перед передачей его новой форме в Rails - PullRequest
0 голосов
/ 26 марта 2012

У меня есть два вложенных ресурса, так что у продукта может быть много заказов. На одной странице в другом контроллере я хочу создать новое бронирование, и так как это «общее» бронирование, я хочу, чтобы меню выбора отображалось в модальном окне, где пользователь может выбрать один из существующих продуктов и затем перейти к Страница бронирования.

Как я могу это сделать?

У меня нет проблем с настройкой модального режима, и страница "Новое бронирование" уже есть. Мне нужна форма, которая генерирует список существующих продуктов, выбирает идентификатор выбранного продукта и затем получает / products /: product_id / bookings / new.

Очистить;

У меня есть два ресурса, установленных в маршрутах:

resources :products do
  resources :bookings
end

У продукта есть много бронирований, поэтому путь для создания новой брони будет /products/:product_id/bookings/new.

У меня есть другой контроллер с видом, где я хочу кнопку для создания нового бронирования. Проблема в том, что я не знаю, для какого продукта пользователь хочет создать бронирование, когда нажата кнопка «Новое бронирование». Чтобы решить, что мой план состоял в том, чтобы показать модальное окно, содержащее выбор со всеми продуктами, чтобы пользователь мог выбрать продукт, а затем был перенаправлен в / products /: product_id / bookings / new с: product_id в качестве выбранного продукта.

Прямо сейчас у меня есть решение, которое работает, но оно не очень хорошее, я создал форму с действием для / products /: product_id / bookings / new и с method = get. Затем я улавливаю отправку с помощью JavaScript, изменяю действие и затем снова отправляю:

$("#new_booking_form").submit(function() { 
    var product_id = $(this).find('select').val();
    var form_action = $(this).attr("action");
    var new_form_action = form_action.replace(/product_id/, product_id);

    $(this).attr("action", new_form_action);
    $(this).submit();
});

Это решение работает, но очень уродливо! Есть предложения?

Ответы [ 2 ]

0 голосов
/ 27 марта 2012

Я думаю, что вы можете показать список продуктов со ссылками на форму создания вместо выбора в модальном диалоге:

<ul>
<% Product.all.each do |product| %>
  <li><%= link_to product.name, new_product_bookings_path(product) %></li>
<% end%>
</ul>
0 голосов
/ 27 марта 2012

Если я вас правильно понимаю, и есть отношения, когда продукт имеет много заказов, вы хотели бы что-то вроде этого, ваши маршруты.rb

RAILS 3:

resources :products do
  resource :bookings
end

RAILS 2:

map.resource :products do |product|
  product.resource :bookings
end

, затем перенаправьте его на страницу, используя:

format.html { redirect_to new_product_bookings_url(@product) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...