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