undefined method error

I am getting the following error when trying to link a method in a view so that it can be called on that very object(id).

undefined method `abc_notice_path' for #<ActionView::Base:0xed65220>

Extracted source (around line #25):

22: <%= link_to 'Edit', edit_notice_path(@notice) %> | 23: <%= link_to 'Back', notices_path %> 24: | 25: <%= link_to 'Save', abc_notice_path(@notice) %>

Here is the code for my method.

def abc      @notice = Notice.find(params[:id])      #f = File.new("#{RAILS_ROOT}/public/jar/notice.txt","w")     #f.write @notice.title     #f.write @notice.body     #f.write @notice.user_name     #f.close     #send_file("#{RAILS_ROOT}/public/jar/notice.txt")   end

I wonder why i am getting this error. This method is defined in a controller which was generated through scaffolding and other functions that were created are working fine. Please help me. I am a novice to rails. Any help will be highly appreciated.

Gautam wrote:

I am getting the following error when trying to link a method in a view so that it can be called on that very object(id).

undefined method `abc_notice_path' for #<ActionView::Base:0xed65220>

Extracted source (around line #25):

22: <%= link_to 'Edit', edit_notice_path(@notice) %> | 23: <%= link_to 'Back', notices_path %> 24: | 25: <%= link_to 'Save', abc_notice_path(@notice) %>

Here is the code for my method.

def abc      @notice = Notice.find(params[:id])      #f = File.new("#{RAILS_ROOT}/public/jar/notice.txt","w")     #f.write @notice.title     #f.write @notice.body     #f.write @notice.user_name     #f.close     #send_file("#{RAILS_ROOT}/public/jar/notice.txt")   end

I wonder why i am getting this error. This method is defined in a controller which was generated through scaffolding and other functions that were created are working fine. Please help me. I am a novice to rails. Any help will be highly appreciated.

Hi Gautam,

Please check your routes.rb first, I think u forget to specify the name of the action in route.

Thanks for your kind reply. Here is the code of my routes.rb file Please suggest corrections, if any...

   map.resources :notices    map.resources :users, :has_many => :notices    map.resource :session

  map.connect ':controller/:action/:id'   map.connect ':controller/:action/:id.:format'   map.connect '/notices/:id/:abc', :controller => "notices", :action => "abc"

  map.root :controller=> 'welcome'   map.signup '/signup', :controller => 'users', :action => 'new'   map.login '/login', :controller => 'sessions', :action => 'new'   map.logout '/logout', :controller => 'sessions', :action => 'destroy'   map.create '/create', :controller => 'notices', :action => 'new'

Gautam wrote:

Thanks for your kind reply. Here is the code of my routes.rb file Please suggest corrections, if any...

   map.resources :notices    map.resources :users, :has_many => :notices    map.resource :session

  map.connect ':controller/:action/:id'   map.connect ':controller/:action/:id.:format'   map.connect '/notices/:id/:abc', :controller => "notices", :action => "abc"

  map.root :controller=> 'welcome'   map.signup '/signup', :controller => 'users', :action => 'new'   map.login '/login', :controller => 'sessions', :action => 'new'   map.logout '/logout', :controller => 'sessions', :action => 'destroy'   map.create '/create', :controller => 'notices', :action => 'new'

try this out. Change

map.connect '/notices/:id/:abc', :controller => "notices", :action

=> "abc"

to

map.abc_notice '/notices/:id/:abc', :controller => "notices", :action

=> "abc"

Then when you call abc_notice_path(4, 'alphabet')

Maybe that will help out.