2013-02-23 72 views
0

我试图使用Ruby on Rails将新的location添加到restaurant使用new_foo_path添加具有外键关系的新记录(@bar)

restaurants#show行动我跑:

​​

我也得到一个URL:http://localhost:3000/locations/new.1,其中1是餐厅的ID。但是新的位置表单未显示。

什么是轨道方式来处理这个简单的情况?是否正在使用new_FOO_path甚至是正确的事情?

在这种情况下,我不应该有一个下拉选择餐厅,因为我希望最终用户只能够一个location添加到自己的餐厅。我不知何故需要在添加位置表单中添加带餐厅ID的隐藏输入,并且还要验证后端的ID。

回答

0

我会在您的routes.rb中创建一个nested resource。例如:

resources :restaurants do 
    resources :locations 
end 

然后您的链接目标将是new_restaurant_location_path(@restaurant)。在您的控制器中,您可以通过Restaurant.find(params[:restaurant_id])找到餐厅。

或者,将餐厅ID设置为GET参数new_location_path(:restaurant_id => @restaurant.id)

+0

我似乎无法找到restaurant_id作为隐藏字段。如何在视图中访问它以在POST操作方法中设置正确的'restaurant_id'? – sergserg 2013-02-23 16:13:33

+0

你不需要。使用嵌套路线,restaurant_id是路径的一部分。例如:'/ restaurants/1/locations/new'。确保您的位置在您的控制器中正确构建,例如'@location = @ restaurant.location.build',那么表单应该使用正确的路线。或者使用'form_for [@restaurant,@location]'。 – ashtom 2013-02-23 16:19:45

相关问题