2012-03-26 60 views
0

我有一些两个嵌套的资源,以便产品可以有很多预订。在另一个控制器中的一个页面上,我想创建一个新的预订,并且由于这是一个“常规”预订,我想要一个选择菜单出现在模式窗口中,用户可以选择其中一个现有产品,然后转到预订页面。在将它传递给Rails中的'新'表单之前选择id的表格

我该怎么做?

我没有问题设置模式和“新预订”页面已经存在。我需要的是一个生成现有产品列表的表单,选取所选产品ID,然后获取/ products /:product_id/bookings/new。

清除;

我对这两种资源的路线设置:

resources :products do 
    resources :bookings 
end 

的产品有很多订单,从而创建一个新的预订将在路径/产品/:PRODUCT_ID /预订/新。

我有另一个控制器的视图,我想要一个按钮来创建一个新的预订。问题是我不知道当点击“新预订”按钮时用户想要创建预订的产品。为了解决这个问题,我的计划是显示一个包含所有产品选择的模式窗口,用户应该能够选择产品,然后将其重定向到/ 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(); 
}); 

此解决方案的作品,但非常难看!有什么建议么?

回答

0

如果我正确认识你,还有就是产品有许多预订的关系,你会希望这样的事情是你的routes.rb

钢轨3:

resources :products do 
    resource :bookings 
end 

梁2:

format.html { redirect_to new_product_bookings_url(@product) } 
01:

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

然后使用这个直接到页

+0

我编辑我的问题,希望它更有意义吧!尽管感谢您的回答。 – samuel02 2012-03-27 07:48:04

0

我觉得你可以在模态对话框显示的产品链接到创作形式,而不是选择列表:

<ul> 
<% Product.all.each do |product| %> 
    <li><%= link_to product.name, new_product_bookings_path(product) %></li> 
<% end%> 
</ul> 
相关问题