Hi,
I am quite new to ROR.I am trying to create a rails simple application that has informations about Books and Subjects.Srangely, I finished creating a basic application, and it worked fine. But then , I just tried to add some more values in the database, and faced problem with migration, that just made me crazy. SO I deleted the database and did the database and migration thing all over again without touching rest of the codes.Now the application runs, but when I click on the subject name, it show error, although it was working well before.Can someone help me please in this regards ???
The ERROR is :
NoMethodError in Book#show_subjects
Showing book/show_subjects.rhtml where line #1 raised:
You have a nil object when you didn't expect it! The error occurred while evaluating nil.name
Extracted source (around line #1):
1: <h1><%= @subject.name -%></h1> 2: <ul> 3: <% @subject.books.each do |c| %> 4: <li><%= link_to c.title, :action => "show", :id => c.id -%></li>
I have two tables in my database : books and subjects
The Controller is
class BookController < ApplicationController layout 'standard' def list
@books = Book.find(:all) end
def show
@book = Book.find(params[:id]) end
def new @book = Book.new @subjects = Subject.find(:all) end
def create @book = Book.new(params[:book]) if @book.save redirect_to :action => 'list' else @subjects = Subject.find(:all, :order => "name") render :action => 'new' end end
def edit
@book = Book.find(params[:id]) @subjects = Subject.find(:all) end
def update @book = Book.find(params[:id]) if @book.update_attributes(params[:book]) redirect_to :action => 'show', :id => @book else @subjects = Subject.find(:all) render :action => 'edit' end end
def delete Book.find(params[:id]).destroy redirect_to :action => 'list' end
def show_subjects @subjects = Subject.find(params[:id])
end
end
The show_subjects.rhtml file is :
<h1><%= @subject.name -%></h1> <ul> <% @subject.books.each do |c| %> <li><%= link_to c.title, :action => "show", :id => c.id -%></li> <% end %> </ul>