Controller::UrlGenerationError

ActionController::UrlGenerationError in

Shopping#new Hey

I am adding another database to my first one and i created the html to work showing the data but when i want to create a new entry this error occurs. I have a new controller with everything in it but not sure why it doesnt work.

Showing C:/Sites/blog/app/views/shopping/new.html.erb where line #2 raised:

No route matches {:action=>"show", :controller=>"shopping"} missing required keys: [:id]

Extracted source (around line #2):

1
2
3
4
5
<h1>Shopping#new</h1>

<%= form_for @shop, url: shopping_path do |f| %>

<p>

<%= f.label :title %><br>

<%= f.text_feild :title %>

`Rails.root: C:/Sites/blog`

[Application Trace](http://localhost:3000/shopping/new#) |
[Framework Trace](http://localhost:3000/shopping/new#) |
[Full Trace](http://localhost:3000/shopping/new#)

app/views/shopping/new.html.erb:2:in `_app_views_shopping_new_html_erb___572466137_45190848’


## Request
**Parameters**:

None

[Toggle session dump](http://localhost:3000/shopping/new#)

[Toggle env dump](http://localhost:3000/shopping/new#)

## Response
**Headers**:

None

Controller:

class ShoppingController < ApplicationController def new

@shop = Shop.new

end

def create @shop = Shop.new(shop_params)

@shop.save
redirect_to @shop

end

def show @shop = Shop.find(params[:id]) end

def index @shopping = Shop.all end

private def shop_params params.require(:shop).permit(:title, :text) end

end

HTML FILE

Shopping#new

<%= form_for @shop, url: shopping_path do |f| %>

<%= f.label :title %>
<%= f.text_feild :title %>

<p>
<%= f.label :text %><br>
<%= f.text_area :text %>
</p>

<p>
<%= f.submit %>
</p>

<% end %> <%= link_to ‘Back’, shopping_path %>

Regards

Hey

I am adding another database to my first one and i created the html to work showing the data but when i want to create a new entry this error occurs. I have a new controller with everything in it but not sure why it doesnt work.

Do you mean a new table, rather than a new database?

ActionController::UrlGenerationError in Shopping#new

Showing *C:/Sites/blog/app/views/shopping/new.html.erb* where line *#2* raised:

No route matches {:action=>"show", :controller=>"shopping"} missing required keys: [:id]

Extracted source (around line *#2*):

12345

   <h1>Shopping#new</h1>   <%= form_for @shop, url: shopping_path do |f| %>

Can you post the file db/schema.rb please.

By the way, it is generally better to copy/paste the error from the terminal window rather than post the html. It should also be in development.log.

Colin

here is the schema

ActiveRecord::Schema.define(version: 20141016020227) do

create_table “articles”, force: true do |t| t.string “title” t.text “text” t.datetime “created_at” t.datetime “updated_at” t.string “time” t.string “age” t.string “el” t.string “experience” end

create_table “shops”, force: true do |t| t.string “title” t.text “text” t.datetime “created_at” t.datetime “updated_at” end

end

and yeah i meant new table.

I think you need to put the url parameter in the form like this:

shopping_path(@shop)

I think you can also omit the URL parameter entirely and the form_for will know which path to use automatically because you have supplied the object that the form is bound to. (I am 95% sure I am correct so leave 5% room for error in this information)

-Jason