I used scaffold command generate scaffold User username:string password:string email:string validation_code:string validated:boolean and when i go to http://localhost:3000/users/ i get this error: undefined local variable or method `new_user_path'' for #<ActionView::Base:0x5f1c3f4> 25: 26: <br /> 27: 28: <%= link_to ''New user'', new_user_path %> Where is the local variable new_user_path supposed to be defined (the controller?).. and why didn''t the script generate this? Thanks Ruby version 1.8.6 (i386-mswin32) RubyGems version 1.3.3 Rails version 2.2.2 Active Record version 2.2.2 Action Pack version 2.2.2 Active Resource version 2.2.2 Action Mailer version 2.2.2 Active Support version 2.2.2
add map.resources :users to your config/routes.rb file tom bandejapaisa wrote:> I used scaffold command > > generate scaffold User username:string password:string > email:string validation_code:string validated:boolean > > and when i go to http://localhost:3000/users/ i get this error: > > undefined local variable or method `new_user_path'' for > #<ActionView::Base:0x5f1c3f4> > > 25: > 26: <br /> > 27: > 28: <%= link_to ''New user'', new_user_path %> > > Where is the local variable new_user_path supposed to be defined (the > controller?).. and why didn''t the script generate this? > > Thanks > > > Ruby version 1.8.6 (i386-mswin32) > RubyGems version 1.3.3 > Rails version 2.2.2 > Active Record version 2.2.2 > Action Pack version 2.2.2 > Active Resource version 2.2.2 > Action Mailer version 2.2.2 > Active Support version 2.2.2 > >-- ==============================================================================Tomas Meinlschmidt, MS {MCT, MCP+I, MCSE, AER}, NetApp Filer/NetCache - experienced RoR/PHP freelancer, available for hire www.meinlschmidt.com www.maxwellrender.cz www.lightgems.cz ===============================================================================
rake routes >routes.lst will write all the current route definitions to a file for you to view. -- Posted via http://www.ruby-forum.com/.
You may need to stop and restart your server (mongrel? webrick?) after running the scaffold command to reload the new routes associated with User. On May 17, 7:44 am, bandejapaisa <djcasse...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote:> I used scaffold command > > generate scaffold User username:string password:string > email:string validation_code:string validated:boolean > > and when i go tohttp://localhost:3000/users/i get this error: > > undefined local variable or method `new_user_path'' for > #<ActionView::Base:0x5f1c3f4> > > 25: > 26: <br /> > 27: > 28: <%= link_to ''New user'', new_user_path %> > > Where is the local variable new_user_path supposed to be defined (the > controller?).. and why didn''t the script generate this? > > Thanks > > Ruby version 1.8.6 (i386-mswin32) > RubyGems version 1.3.3 > Rails version 2.2.2 > Active Record version 2.2.2 > Action Pack version 2.2.2 > Active Resource version 2.2.2 > Action Mailer version 2.2.2 > Active Support version 2.2.2
Hi all, I have the same problem, after create the scaffold I try to do new methods in the controller and when I want to call it, I see undefined local variable or method `semana_post_path'' for #<ActionView::Base:0xb610e4cc> Then I try changing the url http://localhost:3000/posts/semana Couldn''t find Post with ID=semana ... app/controllers/posts_controller.rb:44:in `show'' I try to restart the server (webrick), map.resources is active too and the routes.lst is this: $ more routes.lst (in /home/sak/Projectos/Rails/vigg2) posts GET /posts {:controller=>"posts ", :action=>"index"} formatted_posts GET /posts.:format {:controller=>"posts ", :action=>"index"} POST /posts {:controller=>"posts ", :action=>"create"} POST /posts.:format {:controller=>"posts ", :action=>"create"} new_post GET /posts/new {:controller=>"posts ", :action=>"new"} formatted_new_post GET /posts/new.:format {:controller=>"posts ", :action=>"new"} edit_post GET /posts/:id/edit {:controller=>"posts ", :action=>"edit"} formatted_edit_post GET /posts/:id/edit.:format {:controller=>"posts ", :action=>"edit"} post GET /posts/:id {:controller=>"posts ", :action=>"show"} formatted_post GET /posts/:id.:format {:controller=>"posts ", :action=>"show"} PUT /posts/:id {:controller=>"posts ", :action=>"update"} PUT /posts/:id.:format {:controller=>"posts ", :action=>"update"} DELETE /posts/:id {:controller=>"posts ", :action=>"destroy"} DELETE /posts/:id.:format {:controller=>"posts ", :action=>"destroy"} root / {:action=>"index", : controller=>"posts"} /:controller/:action/:id /:controller/:action/:id.:format Any idea why rails ignore the new methods in the controller? It''s very important for me. Thanks -- Posted via http://www.ruby-forum.com/.
Rails is ignoring your new method in the controller because you haven''t told Rails about it in your routes.rb file. If you add a method in the controller that is the target of an HTTP request, you''ll need to add that method to the routes.rb file. http://api.rubyonrails.org/classes/ActionController/Resources.html Where you probably have: map.resources :posts you need to tell Rails about any added methods. Added methods for a collection of posts goes into a :collection => {:action => :verb} hash. Added methods for a single post goes into a :member => {:action => :verb} hash. :action is your controller method name, :verb is the HTTP verb, :get, :post, :put, :delete (or :any) If you''ve implemented a ''remove_all'' method for the collection of posts, as well as a generate_pdf method for a single post, your routes.rb might look like: map.resources :posts, :collection => {:remove_all => :delete}, :member => {:generate_pdf => :get} -- Posted via http://www.ruby-forum.com/.