Hi, I created a new table in my project which represents a m:n-relation: create table products_shops ( id int not null auto_increment, product_id int not null, shop_id int not null, constraint fk_productsshops_products foreign key (product_id) references products(id), constraint fk_productsshops_shops foreign key (shop_id) references shops(id), primary key(id) ) engine=InnoDB; Afterwards I called "scaffold_resource" with "product_shop id:int product_id:int shop_id:int". Now I tried to run the tests. The Unittest is fine, but in the functional test the following error occurs: test_should_create_product_shop(ProductsShopsControllerTest): NoMethodError: undefined method `product_shop_url'' for #<ProductsShopsController:0x45ce7a8> /app/controllers/products_shops_controller.rb:42:in `create'' The effected code snippets are: class ProductsShopsControllerTest < Test::Unit::TestCase ... def test_should_create_product_shop old_count = ProductShop.count post :create, :product_shop => {:product_id => 1, :shop_id => 1} assert_equal old_count+1, ProductShop.count assert_redirected_to product_shop_path(assigns(:product_shop)) end ... end class ProductsShopsController < ApplicationController ... def create @product_shop = ProductShop.new(params[:product_shop]) respond_to do |format| if @product_shop.save flash[:notice] = ''ProductShop was successfully created.'' format.html { redirect_to product_shop_url(@product_shop) } format.xml { head :created, :location => product_shop_url(@product_shop) } else format.html { render :action => "new" } format.xml { render :xml => @product_shop.errors.to_xml } end end end ... end I''m quite new to Ruby on Rails and I do not even know, where I can find the implementation of product_shop_url. I mean, I have another class, e.g. ProductsController, where product_url is called and there I do not get an error, but I can''t find method product_url either. Can you tell me how it works and do you have an idea why this error occurs? -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
You haven''t defined map.resources :shops, :member => { :product => :get } in your routes.rb file. On Jan 6, 2008 8:27 PM, Xxx Yyy <rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> > Hi, > > I created a new table in my project which represents a m:n-relation: > > create table products_shops ( > id int not null auto_increment, > product_id int not null, > shop_id int not null, > constraint fk_productsshops_products foreign key (product_id) > references products(id), > constraint fk_productsshops_shops foreign key (shop_id) references > shops(id), > primary key(id) > ) engine=InnoDB; > > Afterwards I called "scaffold_resource" with "product_shop id:int > product_id:int shop_id:int". > > Now I tried to run the tests. The Unittest is fine, but in the > functional test the following error occurs: > test_should_create_product_shop(ProductsShopsControllerTest): > NoMethodError: undefined method `product_shop_url'' for > #<ProductsShopsController:0x45ce7a8> > /app/controllers/products_shops_controller.rb:42:in `create'' > > The effected code snippets are: > > class ProductsShopsControllerTest < Test::Unit::TestCase > ... > > def test_should_create_product_shop > old_count = ProductShop.count > post :create, :product_shop => {:product_id => 1, :shop_id => 1} > assert_equal old_count+1, ProductShop.count > > assert_redirected_to product_shop_path(assigns(:product_shop)) > end > > ... > end > > > class ProductsShopsController < ApplicationController > ... > > def create > @product_shop = ProductShop.new(params[:product_shop]) > > respond_to do |format| > if @product_shop.save > flash[:notice] = ''ProductShop was successfully created.'' > format.html { redirect_to product_shop_url(@product_shop) } > format.xml { head :created, :location => > product_shop_url(@product_shop) } > else > format.html { render :action => "new" } > format.xml { render :xml => @product_shop.errors.to_xml } > end > end > end > > ... > end > > I''m quite new to Ruby on Rails and I do not even know, where I can find > the implementation of product_shop_url. I mean, I have another class, > e.g. ProductsController, where product_url is called and there I do not > get an error, but I can''t find method product_url either. Can you tell > me how it works and do you have an idea why this error occurs? > -- > Posted via http://www.ruby-forum.com/. > > > >-- Ryan Bigg http://www.frozenplague.net Feel free to add me to MSN and/or GTalk as this email. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Thank you very much for ya quick answer! It works. Now I try to understand that routing-thing... But I think I find enough documentation about that - now that I know what I have to look for. Thanks! Ryan Bigg wrote:> You haven''t defined map.resources :shops, :member => { :product => :get > } in > your routes.rb file.-- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---