Add note model in Rails
- by dannymcc
Hi Everyone,
I am following the 15 minute blog tutorial on Ruby on Rails .com: http://media.rubyonrails.org/video/rails_blog_2.mov and am stumbling into some issues.
I am using the following alterations to the names in the tutorial:
posts = kases
comments = notes
I have setup the models as follows:
class Kase < ActiveRecord::Base
validates_presence_of :jobno
has_many :notes
belongs_to :company # foreign key: company_id
belongs_to :person # foreign key in join table
belongs_to :surveyor,
:class_name => "Company",
:foreign_key => "appointedsurveyor_id"
belongs_to :surveyorperson,
:class_name => "Person",
:foreign_key => "surveyorperson_id"
def to_param
jobno
end
and...
class Note < ActiveRecord::Base
belongs_to :kase
end
The Notes controller look like this:
# POST /notes
# POST /notes.xml
def create
@kase = Kase.find(params[:kase_id])
@note = @kase.notes.build(params[:note])
redirect_to @kase
end
and the database scheme for Kases looks like this:
create_table "notes", :force => true do |t|
t.integer "kase_id"
t.text "body"
t.datetime "created_at"
t.datetime "updated_at"
end
and for kases...
create_table "kases", :force => true do |t|
t.string "jobno"
t.date "dateinstructed"
t.string "clientref"
t.string "clientcompanyname"
t.text "clientcompanyaddress"
t.string "clientcompanyfax"
t.string "casehandlername"
t.string "casehandlertel"
t.string "casehandleremail"
t.text "casesubject"
t.string "transport"
t.string "goods"
t.string "claimantname"
t.string "claimantaddressline1"
t.string "claimantaddressline2"
t.string "claimantaddressline3"
t.string "claimantaddresscity"
t.string "claimantaddresspostcode"
t.string "claimantcontact"
t.string "claimanttel"
t.string "claimantmob"
t.string "claimantemail"
t.string "claimanturl"
t.string "lyingatlocationname"
t.string "lyingatlocationaddressline1"
t.string "lyingatlocationaddressline2"
t.string "lyingatlocationaddressline3"
t.string "lyingatlocationaddresscity"
t.string "lyingatlocationaddresspostcode"
t.string "lyingatlocationcontactname"
t.string "lyingattel"
t.string "lyingatmobile"
t.string "lyingatlocationurl"
t.text "comments"
t.string "invoicenumber"
t.string "netamount"
t.string "vat"
t.string "grossamount"
t.date "dateclosed"
t.date "datepaid"
t.datetime "filecreated"
t.string "avatar_file_name"
t.string "avatar_content_type"
t.integer "avatar_file_size"
t.datetime "avatar_updated_at"
t.datetime "created_at"
t.datetime "updated_at"
t.string "kase_status"
t.string "invoice_date"
t.integer "surveyorperson_id"
t.integer "appointedsurveyor_id"
t.integer "person_id"
t.string "company_id"
t.string "dischargeamount"
t.string "dishchargeheader"
t.text "highrisesubject"
end
Whenever I enter a note into the kase show view's note entry form:
<h2>Notes</h2>
<div id="sub-notes">
<%= render :partial => @kase.notes %>
</div>
<% form_for [@kase, Note.new] do |f| %>
<p>
<%= f.label :body, "New Note" %><br />
<%= f.text_area :body %>
</p>
<p><%= f.submit "Add Note" %></p>
<% end %>
partial:
<% div_for note do %>
<p>
<strong>Created <%= time_ago_in_words(note.created_at) %> ago</strong><br />
<%= h(note.body) %>
</p>
<% end %>
I get the following error:
ActiveRecord::RecordNotFound in NotesController#create
Couldn't find Kase with ID=Test Case
I have tried removing the
def to_param
jobno
end
from the kase model, but the same error shows.
Any ideas what I'm missing?
Thanks,
Danny