NoMethodError - previously defined method?


#1

Hello,

I have a simple controller named AssociationsController. Here is a snip:

AssociationsController< ApplicationController

def detail
@association = Association.find(params[:id])
render layout: => “frontend”
end

def display
@association = Association.find(params[:id])
render layout: => “frontend”
end

def displaydetail
@association = Association.find(params[:id])
render layout: => “frontend”
end

end

When called using standard routing:
http://www.test.com/apps/public/associations/display/3
http://www.test.com/apps/public/associations/detail/3
http://www.test.com/apps/public/associations/displaydetail/3

Only the displaydetail method works, the others give:
NoMethodError in Associations#display
NoMethodError in Associations#detail

There are three identical rhtml files, each named for the method, as
they should be.

Is this some sort of issue with display and detail already being
defined elsewhere?

Thanks for any help you can give.

Dave


#2

Hi Dave,

Dave Evans wrote:

I have a simple controller named AssociationsController.
Here is a snip:

AssociationsController< ApplicationController

Is your model, by any chance, names ‘associations’? If so, that’s
probably
where your problem starts.

hth,
Bill


#3

Nope, my model is named Association:

class Association < ActiveRecord::Base

has_many :bulletins
file_column :photo, :magick => { :geometry => “300x200>” }

end

Why did you suspect that?


#4

Hi Dave,

Dave Evans wrote:

Nope, my model is named Association:

Why did you suspect that?

Because Rails’ default behavior would lead one to expect
AssociationController, not AssociationsController. I could be wrong,
but I
think that unless you tell it otherwise, Rails is going to look for a
model
named ‘Associations’. Try explicitly telling Rails what model to look
for.

model :association

HTH,
Bill


#5

That may be so. I used the generate script to generate scaffolding for
the application. It created both an AssociationController and an
AssociationsController.

If you have a look at the controller code I posted in my original
email, you’ll see that I am specifying the Association model in my
methods. The question is: Why do two methods that defined the same yet
named differently behave differently? display doesn’t work.
displaydetail does. That makes me think there is some previous
definition of the display method that is taking precedence.

Dave