Undefined Method error - help request

Good morning All -

I am working on a time tracking application as a learning excercise
and have run into an error neither I nor Google can remedy.

When loading my view, I get an error: 'undefined method
'true_class_path' for #<ActionView::Base:.........

Context:

I have controllers for Project, Worktrack and 'Workbench', among
others. Workbench is where users would actually assign Worktracks to
projects. There is no 'Workbench' table - I created just a controller
for it, based on the 'Cart' controller in Agile Web Development.
Project and Worktrack have complete scaffolds.

Workbench View code:

<%= button_to "Add Worktrack", assign_worktrack(project) %>

Workbench Controller code:

def assign_worktrack(project_identifier)
  project_identifier.worktracks << Worktrack.new(:status => "Not
Started")
  project_identifier.save
end

I am struggling with the following:

1. Google-ing true_class_path in almost any context provides no useful
information - I'm not sure what the error even means, aside from the
name, and I can't figure out an action based on having an apparently
bad path. Diagnosis hints would be much appreciated.

2. In the 'proper MVC / Rails' realm - should my method be in the
controller, or somewhere else? I tried moving it to the
projects_helper and application_helper files assuming that this would
help Rails connect the dots to the appropriate path, but that did not
work and 'felt wrong'.

3. My code is probably suboptimal - like I said, I'm just learning RoR
and Ruby. Suggestions in that realm, especially if I have anything WTF-
worthy are welcome.

To me, this whole issue smells like "I put my code in the wrong place
and confused Rails", but I can't get any further.

Any help or insight would be much appreciated.

Thanks in advance for your time -

SR

Good morning All -

I am working on a time tracking application as a learning excercise
and have run into an error neither I nor Google can remedy.

When loading my view, I get an error: 'undefined method
'true_class_path' for #<ActionView::Base:.........

Context:

I have controllers for Project, Worktrack and 'Workbench', among
others. Workbench is where users would actually assign Worktracks to
projects. There is no 'Workbench' table - I created just a controller
for it, based on the 'Cart' controller in Agile Web Development.
Project and Worktrack have complete scaffolds.

Workbench View code:

<%= button_to "Add Worktrack", assign_worktrack(project) %>

Workbench Controller code:

def assign_worktrack(project_identifier)
project_identifier.worktracks << Worktrack.new(:status => "Not
Started")
project_identifier.save
end

I am struggling with the following:

1. Google-ing true_class_path in almost any context provides no useful
information - I'm not sure what the error even means, aside from the
name, and I can't figure out an action based on having an apparently
bad path. Diagnosis hints would be much appreciated.

2. In the 'proper MVC / Rails' realm - should my method be in the
controller, or somewhere else? I tried moving it to the
projects_helper and application_helper files assuming that this would
help Rails connect the dots to the appropriate path, but that did not
work and 'felt wrong'.

3. My code is probably suboptimal - like I said, I'm just learning RoR
and Ruby. Suggestions in that realm, especially if I have anything WTF-
worthy are welcome.

To me, this whole issue smells like "I put my code in the wrong place
and confused Rails", but I can't get any further.

Rails tries to be helpful to you - if you say something like
redirect_to @book (or link_to 'Show', @book, form_for @book etc...)
and @book is an instance of Book, then rails assumes that you have set
up routes for books and that it should use the book_path helper to
generate the relevant url.

It sounds like somewhere in your code (follow the stack trace from
your error), you are giving Rails the value true where it expected you
to supply an active record object ( Rails sees the value true, which
is the singleton instance of the class TrueClass and so, by its logic
the url should be generated by true_class_path).

In particular button_to is a method like this - what value are you
passing it ? (Ie what is the return value of assign_worktrack ?(

Beyond the actual error, that code looks really fishy -
assign_worktrack will be called at the point that the view is rendered
(not when the button is clicked). If you're doing things in the true
rails/restful spirit then worktracks would probably be a nested
resource of projects and so project_worktracks_path(project) would
return the path for listing/creating worktracks for that project (This
may or may not be true - it don't know your data or how it all fits
together).

Fred

Fred

Many thanks, Fred.

Your comments were extremely helpful in that they make sense, but I
don't understand them well enough to actually turn them into action
steps - which suggests I am trying to do things I should not be (yet),
hence my 'fishy' code.

I'll go back and start from scratch on a tutorial, then attack this
project fresh later.

Thanks again -

SR