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ü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ü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ü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

ml => @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

ml => @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

ml => @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

ml => @feed, :status => :created, :location => @feed }
else
format.html { render :action => "new" }
format.xml { render

ml => @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

k }
else
format.html { render :action => "edit" }
format.xml { render

ml => @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

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