# Routing error: no route matches contoller works. Route exists though

**URL:** <https://www.ruby-forum.com/t/routing-error-no-route-matches-contoller-works-route-exists-though/220306>\
**Category:** Rails\
**Created:** [June 5, 2012, 6:56pm UTC](https://www.ruby-forum.com/t/routing-error-no-route-matches-contoller-works-route-exists-though/220306 "2012-06-05T18:56:13Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Gurdipe\_D](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/b77776/32.png) [@Gurdipe\_D](https://www.ruby-forum.com/u/Gurdipe_D)\
**Post date:** [June 5, 2012, 6:56pm UTC](https://www.ruby-forum.com/t/routing-error-no-route-matches-contoller-works-route-exists-though/220306/1 "2012-06-05T18:56:13Z")

</div>

I have a fairly straight forward rails app, version 3.2. When I try to  
create a Work instance, with deliberately invalid fields from a form, I  
get a routing error:

```
No route matches {:controller=>"works"}

```

This does not happen when I try the same test with an update on a Work  
instance. After an attempted update I get the edit.html.erb page  
rendered with the invalid fields highlighted.

I dont understand why after failing the save in the controller and  
trying to render “new” it would give me a route matching error. Any  
ideas?

Attached are my model, controller and routes.rb

---

<div class="post-metadata">

**Author:** ![martyn\_w](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/848f3c/32.png) [@martyn\_w](https://www.ruby-forum.com/u/martyn_w)\
**Post date:** [June 5, 2012, 7:03pm UTC](https://www.ruby-forum.com/t/routing-error-no-route-matches-contoller-works-route-exists-though/220306/2 "2012-06-05T19:03:18Z")

</div>

On Tue, Jun 5, 2012 at 9:56 AM, Martyn W. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> I dont understand why after failing the save in the controller and  
> trying to render “new” it would give me a route matching error. Any  
> ideas?

Yes - look at the log for that request 🙂

–  
Hassan S. ------------------------ [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[Hassan Schroeder | about.me](http://about.me/hassanschroeder)  
twitter: @hassan

---

<div class="post-metadata">

**Author:** ![martyn\_w](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/848f3c/32.png) [@martyn\_w](https://www.ruby-forum.com/u/martyn_w)\
**Post date:** [June 5, 2012, 7:08pm UTC](https://www.ruby-forum.com/t/routing-error-no-route-matches-contoller-works-route-exists-though/220306/3 "2012-06-05T19:08:27Z")

</div>

Hassan S. wrote in post #1063180:

> On Tue, Jun 5, 2012 at 9:56 AM, Martyn W. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:
> 
> > I dont understand why after failing the save in the controller and  
> > trying to render “new” it would give me a route matching error. Any  
> > ideas?
> 
> Yes - look at the log for that request 🙂
> 
> –  
> Hassan S. ------------------------ [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> [Hassan Schroeder | about.me](http://about.me/hassanschroeder)  
> twitter: @hassan

Hassan,

I don’t see anything in the logs that explains the routing error. The  
controller is redirecting the failed save to the “new” view using  
render. There shouldn’t be any routing issues here.

Here is the log entry for this action: (sanitized a bit to read)

Started POST “/works” for 127.0.0.1 at 2012-06-05 12:04:18 -0500  
Processing by WorksController#create as HTML  
Parameters: {“utf8”=\>“?”,  
“authenticity\_token”=\>“vrAsdpq9G04to6SgW5HNvb5NWcN8rPCy01ZwKK95lhM=”,  
“work”=\>{“start(1i)”=\>“2012”, “start(2i)”=\>“6”, “start(3i)”=\>“5”,  
“start(4i)”=\>“17”, “start(5i)”=\>“04”, “end(1i)”=\>“2012”, “end(2i)”=\>“6”,  
“end(3i)”=\>“5”, “end(4i)”=\>“17”, “end(5i)”=\>“04”, “good”=\>“”, “bad”=\>“”,  
“operation”=\>“1”, “work\_ticket\_id”=\>“8”, “shift\_id”=\>“1”,  
“operator\_id”=\>“1”, “machine\_id”=\>“1”}, “commit”=\>“Create Work”}  
In start\_must\_be\_before\_end\_time  
In start\_must\_be\_before\_end\_time  
In start\_must\_be\_before\_end\_time  
In start\_must\_be\_before\_end\_time  
@work.save: false  
@work.errors.count: 2

Rendered works/\_form.html.erb (62.5ms)  
Rendered works/new.html.erb within layouts/application (62.5ms)  
Completed 500 Internal Server Error in 156ms

ActionController::RoutingError (No route matches  
{:controller=\>“works”}):  
app/views/works/new.html.erb:5:in  
`_app_views_works_new_html_erb__545664482_19220532' app/controllers/works_controller.rb:136:in `block (2 levels) in  
create’  
app/controllers/works\_controller.rb:127:in `create’

Rendered  
c:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-3.2.3/lib/action\_dispatch/middleware/templates/rescues/routing\_error.erb  
within rescues/layout (0.0ms)

---

<div class="post-metadata">

**Author:** ![martyn\_w](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/848f3c/32.png) [@martyn\_w](https://www.ruby-forum.com/u/martyn_w)\
**Post date:** [June 5, 2012, 7:12pm UTC](https://www.ruby-forum.com/t/routing-error-no-route-matches-contoller-works-route-exists-though/220306/4 "2012-06-05T19:12:40Z")

</div>

On 5 June 2012 18:08, Martyn W. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > Hassan S. ------------------------ [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
> 
> In start\_must\_be\_before\_end\_time  
> {:controller=\>“works”}):  
> app/views/works/new.html.erb:5:in

So the error is on on line 5 of your new.html. What does that line look  
like?

---

<div class="post-metadata">

**Author:** ![martyn\_w](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/848f3c/32.png) [@martyn\_w](https://www.ruby-forum.com/u/martyn_w)\
**Post date:** [June 5, 2012, 7:20pm UTC](https://www.ruby-forum.com/t/routing-error-no-route-matches-contoller-works-route-exists-though/220306/5 "2012-06-05T19:20:30Z")

</div>

Martyn W. wrote in post #1063175:

> I have a fairly straight forward rails app, version 3.2. When I try to  
> create a Work instance, with deliberately invalid fields from a form, I  
> get a routing error:
> 
> ```
> No route matches {:controller=>"works"}
> 
> ```
> 
> This does not happen when I try the same test with an update on a Work  
> instance. After an attempted update I get the edit.html.erb page  
> rendered with the invalid fields highlighted.
> 
> I dont understand why after failing the save in the controller and  
> trying to render “new” it would give me a route matching error. Any  
> ideas?
> 
> Attached are my model, controller and routes.rb

So, it was a link in the new.htnl.erb file referencing a list of works  
through the associated workticket. I guess I need to reassign the  
workticket parameter for the failed save render.
