Rails 3 nested resource route problem as form_for

Fabiano Soriani picture Fabiano Soriani · Feb 5, 2011 · Viewed 13k times · Source

I have nested resources like this in my routes.rb - (my rake:routes gist)

namespace(:admin) do 
  resources :restaurants do
    resources :menus
    resources :menu_items
  end
end

In the controller:

def new 
  @restaurant = Restaurant.find(params[:restaurant_id])
  @menu_item =  @restaurant.menu_items.build
end

Trying to create a new MenuItem (action #new), by the url: http://127.0.0.1:3001/admin/restaurants/1/menu_items/new I get the error:

NoMethodError in Admin/menu_items#new

Showing /home/fps/workspace3/peded/app/views/admin/menu_items/_form.html.erb where line #1 raised:

undefined method `admin_menu_items_path' for #<#<Class:0xb6582d78>:0xb6581f2c>
Extracted source (around line #1):

1: <%= form_for @menu_item do |f| %>
...

How do I make this form work? It was created out of a nifty:scaffold

UPDATE

I also tried this in the _form:

<%= form_for [:restaurant, @menu_item] do |f| %>

But ended with a similar error:

Showing /home/fps/workspace3/peded/app/views/admin/menu_items/_form.html.erb where line #1 raised:

undefined method `restaurant_admin_menu_items_path' for #<#<Class:0xb68162b0>:0xb6813dd0>
Extracted source (around line #1):

1: <%= form_for [:restaurant, @menu_item] do |f| %

Should I file a bug?

Answer

Ultimation picture Ultimation · Feb 9, 2011

form_for([@restaurant, @menu_item])