Note that there are some explanatory texts on larger screens.

plurals
  1. POWhy am I getting argument out of range exception
    text
    copied!<p>Im a rails beginner on Rails 4. Im trying to create a wine list that takes the name of the winery and the year of the bottle. Here is my form </p> <pre><code>&lt;%= form_for @wine do |f| %&gt; &lt;%# render "errors", object: @wine %&gt; &lt;div class="form-group input-group input-group-lg"&gt; &lt;%= f.text_field :name, placeholder: "Enter the winery name", class: "form-control input-lg" %&gt; &lt;/div&gt; &lt;div class="form-group input-group input-group-lg"&gt; &lt;%= select_year(Date.today, start_year: Time.now.year, end_year: Time.now.year - 90, field_name: :year, prefix: :wine) %&gt; &lt;/div&gt; &lt;div class="form_group input-group"&gt; &lt;%= f.submit "Add wine", class: "btn btn-success" %&gt; &lt;/div&gt; &lt;% end %&gt; </code></pre> <p>Here is my controller</p> <pre><code>class WinesController &lt; ApplicationController before_action :set_wine, only: [:show, :edit, :update, :destroy] def index @wines = Wine.all end def new @wine = Wine.new end def create @wine = Wine.new(wine_params) if @wine.save flash[:notice] = "Successfully created..." redirect_to @wine else flash.now[:error] = "There was a problem" render "new" end end def show end def edit end def update if @wine.update(wine_params) redirect_to @wine else flash[:error] = "Something went wrong" render "edit" end end def destroy @wine.destroy redirect_to wines_path end private def set_wine @wine = Wine.find(params[:id]) end def wine_params params.require(:wine).permit(:name, :year) end end </code></pre> <p>I have my wines table with a name:string column and a year:datetime column</p> <p>Whenever I try and create a new wine I get an <code>argument out of range</code> exception and it highlights <code>@wine = Wine.new(wine_params)</code> in my create action. What am I doing wrong?</p> <p>My log </p> <pre><code>Started GET "/wines/new" for 127.0.0.1 at 2013-09-04 10:55:54 -0700 Processing by WinesController#new as HTML Rendered wines/_form.html.erb (2.0ms) Rendered wines/new.html.erb within layouts/application (2.6ms) Rendered layouts/_header.html.erb (0.2ms) Rendered layouts/_footer.html.erb (0.1ms) Completed 200 OK in 10ms (Views: 9.3ms | ActiveRecord: 0.0ms) Started GET "/assets/comingsoonbg.png" for 127.0.0.1 at 2013-09-04 10:55:54 -0700 Started GET "/wines/new" for 127.0.0.1 at 2013-09-04 10:55:54 -0700 Processing by WinesController#new as HTML Rendered wines/_form.html.erb (2.1ms) Rendered wines/new.html.erb within layouts/application (2.7ms) Rendered layouts/_header.html.erb (0.2ms) Rendered layouts/_footer.html.erb (0.1ms) Completed 200 OK in 10ms (Views: 9.8ms | ActiveRecord: 0.0ms) Started POST "/wines" for 127.0.0.1 at 2013-09-04 10:55:59 -0700 Processing by WinesController#create as HTML Parameters: {"utf8"=&gt;"✓", "authenticity_token"=&gt;"FCd3wvCov+mugnJuzwplKD/eVskJKgxweh1mK0pG2wM=", "wine"=&gt;{"name"=&gt;"kjkljhk", "year"=&gt;"2013"}, "commit"=&gt;"Add wine"} Completed 500 Internal Server Error in 1ms ArgumentError (argument out of range): app/controllers/wines_controller.rb:13:in `create' Rendered /Users/me/.rvm/gems/ruby-2.0.0-p247/gems/actionpack-4.0.0/lib/action_dispatch/middleware/templates/rescues/_source.erb (0.7ms) Rendered /Users/me/.rvm/gems/ruby-2.0.0-p247/gems/actionpack-4.0.0/lib/action_dispatch/middleware/templates/rescues/_trace.erb (0.9ms) Rendered /Users/me/.rvm/gems/ruby-2.0.0-p247/gems/actionpack-4.0.0/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (0.9ms) Rendered /Users/me/.rvm/gems/ruby-2.0.0-p247/gems/actionpack-4.0.0/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (16.2ms) </code></pre> <p>My schema for wines in schema.rb</p> <pre><code>create_table "wines", force: true do |t| t.datetime "year" t.datetime "created_at" t.datetime "updated_at" t.string "name" end </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload