Ruby on Rails Tuesday, April 2, 2013

Hi All,


just in a spot of bother with this gem, I am trying to create a new location and get the above msg.

here is my controller:

class LocationsController < ApplicationController
  # GET /locations
  # GET /locations.json

  def index
    @locations = Location.all
    @json = Location.all.to_gmaps4rails
    end
    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @locations }
    end
  end

  # GET /locations/1
  # GET /locations/1.json
  def show
    @location = Location.find(params[:id])
    @json = Location.all.to_gmaps4rails
    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @location }
    end
  end

  # GET /locations/new
  # GET /locations/new.json
  def new
    @location = Location.new
    @json = Location.all.to_gmaps4rails

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @location }
    end
  end

  # GET /locations/1/edit
  def edit
    @location = Location.find(params[:id])
    @json = Location.all.to_gmaps4rails
  end

  # POST /locations
  # POST /locations.json
  def create
    @location = Location.new(params[:location])
    @json = Location.all.to_gmaps4rails
    respond_to do |format|
      if @location.save
        format.html { redirect_to @location, notice: 'Location was successfully created.' }
        format.json { render json: @location, status: :created, location: @location }
      else
        format.html { render action: "new" }
        format.json { render json: @location.errors, status: :unprocessable_entity }
      end
    end
  end

  # PUT /locations/1
  # PUT /locations/1.json
  def update
    @location = Location.find(params[:id])
    @json = Location.all.to_gmaps4rails
    respond_to do |format|
      if @location.update_attributes(params[:location])
        format.html { redirect_to @location, notice: 'Location was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @location.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /locations/1
  # DELETE /locations/1.json
  def destroy
    @location = Location.find(params[:id])
    @location.destroy
    @json = Location.all.to_gmaps4rails
    respond_to do |format|
      format.html { redirect_to locations_url }
      format.json { head :no_content }
    end
  end

and the _form I use to create the new location:

<%= form_for(@location) do |f| %>
  <% if @location.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@location.errors.count, "error") %> prohibited this location from being saved:</h2>

      <ul>
      <% @location.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :id %><br />
    <%= f.number_field :id %>
  </div>
  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.label :coordinates %><br />
    <%= f.text_field :coordinates %>
  </div>
  <div class="field">
    <%= f.label :course_id %><br />
    <%= f.number_field :course_id %>
  </div>
  <div class="field">
    <%= f.label :college_id %><br />
    <%= f.number_field :college_id %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>
 
This is the error msg in full:

NoMethodError in Locations#new

Showing C:/Postgrads0204/app/views/locations/_form.html.erb where line #1 raised:

undefined method `model_name' for NilClass:Class

Extracted source (around line #1):

1: <%= form_for(@location) do |f| %>
2:   <% if @location.errors.any? %>
3:     <div id="error_explanation">
4:       <h2><%= pluralize(@location.errors.count, "error") %> prohibited this location from being saved:</h2>

Trace of template inclusion: app/views/locations/new.html.erb

Rails.root: C:/Postgrads0204

app/views/locations/_form.html.erb:1:in `_app_views_locations__form_html_erb___82209480_46213008'
app/views/locations/new.html.erb:3:in `_app_views_locations_new_html_erb___810294894_46206828'

Any Ideas where am I going wrong?

Cheers

J

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msg/rubyonrails-talk/-/aCsSvcAzghAJ.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

No comments:

Post a Comment