controller fehlermeldung

Fragen zur Controllerprogrammierung, Actions & Vermittlung zwischen Model und View

controller fehlermeldung

Beitragvon daman am 12.10.2009, 16:58

hallo .


weiss jemand was die meldung zu bedeuten hat ??

Code: Alles auswählen

NoMethodError in BooksController#index You have a nil object when you didn't expect it!You might have expected an instance of ActiveRecord::Base.The error occurred while evaluating nil.[]


das nervt mich total ;.(
daman
 
Beiträge: 1
Registriert: 12.10.2009, 16:54

Re: controller fehlermeldung

Beitragvon Neo1989 am 13.10.2009, 09:41

Poste mal deinen BookController.
Neo1989
 
Beiträge: 2
Registriert: 09.10.2009, 11:28

Re: controller fehlermeldung

Beitragvon isevs am 23.10.2009, 08:16

Hallo, dass ist meine Fehlermeldung und -quelle:

You have a nil object when you didn't expect it! The error occurred while evaluating nil.name
Extracted source (around line #6):

3: <tr><td><b>Index:</b></td><td><%= params[:id] %></td></tr>
4: <tr><td><b>Name:</b></td><td><%=h @feed.name %></td></tr>
5: <tr><td><b>Beschreibung:</b></td><td><%=h @feed.description %></td></tr>
6: <tr><td><b>Kategorie:</b></td><td><%=h @feed.category.name %></td></tr>
7: <tr><td><b>Kategorie-Id:</b></td><td><%=h @feed.category.id %></td></tr>
8: <tr><td><b>URL:</b></td><td><%=h @feed.url %></td></tr>
9: </table>

Der Fehler tritt zwar in show auf, aber ist wohl drauf zurückzuführen, dass create nicht funzt.
Erst seit ich die drop-Downliste in der new.html.erb habe, speichert das system nicht korrekt.
die category_id (Fremdschlüssel) in der Tabelle feeeds unter mysql sit jedesmal NULL. wenn
ich von hand die id nachpflege ist wieder alles super. auch index + edit/update funzt.

Meine Dateiinhalte:

Die views:
# -- show:
<h1>Anzeigen eines Feeds</h1>
<table cellpadding="6">
<tr><td><b>Index:</b></td><td><%= params[:id] %></td></tr>
<tr><td><b>Name:</b></td><td><%=h @feed.name %></td></tr>
<tr><td><b>Beschreibung:</b></td><td><%=h @feed.description %></td></tr>
<tr><td><b>Kategorie:</b></td><td><%=h @feed.category.name %></td></tr>
<tr><td><b>Kategorie-Id:</b></td><td><%=h @feed.category.id %></td></tr>
<tr><td><b>URL:</b></td><td><%=h @feed.url %></td></tr>
</table>

<p>
<%= link_to 'Bearbeiten', edit_feed_path(@feed) %> |
<%= link_to 'Zur&uuml;ck', feeds_path %>
</p>

# -- new:
<h1>Neuer Feed</h1>

<% form_for(@feed) do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<p>
Beschreibung:<br />
<%= f.text_field :description %>
</p>
<p>
url: <br />
<%= f.text_field :url %>
</p>
<p>
<b>Category</b><br />
<%= collection_select :category, :category_id, categories, :id, :name %>
</p>
<p><b>K-Index:</b><br /><%# f.integer @category_id %><br /></p>
<p>
<%= f.submit 'Anlegen' %>
</p>
<% end %>
<%= link_to 'Zur&uuml;ck', feeds_path %>

# -- edit:
<h1>Feed berarbeiten</h1>
<% form_for(@feed) do |f| %>
<%= f.error_messages %>

<table cellpadding="5">
<tr><td><b>Index:</b></td><td><%= params[:id] %></td></tr>
</table>
<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<p>
Beschreibung: <br />
<%= f.text_field :description %>
</p>
<p>
url: <br />
<%= f.text_field :url %>
</p>
<p>
<%= f.submit 'Speichern' %>
</p>
<% end %>
<%= link_to 'Anzeigen', @feed %> |<%= link_to 'Zur&uuml;ck', feeds_path %>

#-------------------------------------------------------------------------
Die Models:
# category.rb
class Category < ActiveRecord::Base
has_many :feeds

validates_presence_of :name, :description
# validates_uniqueness_of :name, :description

def validate
anzeige = "Vor dem IF "
if name == description
errors.add 'description', "sollte einen anderen Wert als \ #{name} haben."
end
print anzeige
end
end

# feed.rb
class Feed < ActiveRecord::Base
belongs_to :category
end

#-------------------------------------------------------------------------
Der Helper:
module FeedsHelper
def categories
@categories ||= Category.find(:all)
end
end

#-------------------------------------------------------------------------

class FeedsController < ApplicationController

# before_filter :authenticate, :except => ['index', 'show']
before_filter :iphone_format

# GET /feeds
# GET /feeds.xml
def index
@feeds = Feed.all
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @feeds }
format.iphone #index.iphone.erb
end
end

# GET /feeds/1
# GET /feeds/1.xml
def show
@feed = Feed.find(params[:id])

respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @feed }
format.iphone #show.iphone.erb
end
end

# GET /feeds/new
# GET /feeds/new.xml
def new
@feed = Feed.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @feed }
end
end

# GET /feeds/1/edit
def edit
@feed = Feed.find(params[:id])
end

# POST /feeds
# POST /feeds.xml
def create
@feed = Feed.new(params[:feed])
a = "2 "
b = " 3 = "
c = a + b + "5"
flash[:notice] = c

respond_to do |format|
if @feed.save
flash[:notice] = 'Feed wurde erfolgreich gespeichert.'
format.html { redirect_to(@feed) }
format.xml { render :xml => @feed, :status => :created, :location => @feed }
else
format.html { render :action => "new" }
format.xml { render :xml => @feed.errors, :status => :unprocessable_entity }
end
end
end


# PUT /feeds/1
# PUT /feeds/1.xml
def update
@feed = Feed.find(params[:id])

respond_to do |format|
if @feed.update_attributes(params[:feed])
flash[:notice] = 'Feed was successfully updated.'
format.html { redirect_to(@feed) }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @feed.errors, :status => :unprocessable_entity }
end
end
end

# DELETE /feeds/1
# DELETE /feeds/1.xml
def destroy
@feed = Feed.find(params[:id])
@feed.destroy

respond_to do |format|
format.html { redirect_to(feeds_url) }
format.xml { head :ok }
end
end
end

Ich hoffe es fällt jemanden was auf, ich bin am verzweifeln!
Gruß Torsten
Gruß

Torsten
isevs
 
Beiträge: 5
Registriert: 10.01.2009, 15:03
Plz/Ort: 38324 Kissenbrück

Re: controller fehlermeldung

Beitragvon ziab am 24.10.2009, 07:58

Hallo Torsten,

ich glaube es liegt an
Code: Alles auswählen
<%= collection_select :category, :category_id, categories, :id, :name %>


Versuch das mal
Code: Alles auswählen
<%= collection_select :feed, :category_id, categories, :id, :name %>
oder

Code: Alles auswählen
<%= f.collection_select :category_id, categories, :id, :name %>


Die category_id gehört auch in params Hash.
Beispiel: die Daten kommen ja so an

Code: Alles auswählen
params[:feed][:name]
params[:feed][:category_id]


Gruß
Guido aus Hürth
ziab
 
Beiträge: 2
Registriert: 09.08.2009, 12:30

Re: controller fehlermeldung

Beitragvon isevs am 24.10.2009, 10:23

Herzlichen Dank!

<%= collection_select :feed, :category_id, categories, :id, :name %>

in use

und jetzt funzt es!

Supi, manchmal kann alles so einfach sein :-)

Gruß

Torsten
Gruß

Torsten
isevs
 
Beiträge: 5
Registriert: 10.01.2009, 15:03
Plz/Ort: 38324 Kissenbrück


Zurück zu C - Controller

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron