Ok everyone. I appreciate your time if you are looking at this, as this site is being setup to assist veterans who are having trouble with the health care system through the VA. And as I said, we are pretty close at this point to going live beta so if you can help me over this hump it would be extremely appreciated.
We have a form setup that asks the user to select a date when treatment began and then when treatment ended. After that they fill out a free text field explaining what kind of problems they experienced during their treatment. Then they submit it.
After that you go to user stories to view the stories submitted by everyone. Except we are getting an error when we try to open this page The error is posted below, and also the code from the models and controllers and rhtml files. I REALLY would appreciate any help in resolving this, so that I can put it into open beta, and then get it out to hopefully help make the nation aware of what is going on within the VA healthcare system.
Thank you for your time,
Dave
P.S. if you spot the problem could you provide easy to understand steps to resolve it?
Error from the page:
NoMethodError in Admissions#index
Showing app/views/admissions/_admission.rhtml where line #2 raised:
You have a nil object when you didn't expect it! The error occurred while evaluating nil.treatment_start
Extracted source (around line #2):
1: <div class="admission"> 2: date: <%=admission.treatment.treatment_start-%><br/> 3: story: <%=admission.treatment.description-%> 4: <%= debug(admission) %> 5: <%= debug(admission.treatment)%>
_admission.rhtml
<div class="admission"> date: <%=admission.treatment.treatment_start-%><br/> story: <%=admission.treatment.description-%> <%= debug(admission) %> <%= debug(admission.treatment)%> </div>
treatment.rb (model)
class Treatment < ActiveRecord::Base acts_as_rateable
belongs_to :user belongs_to :condition belongs_to :treatable, :polymorphic=>true belongs_to :doctor_type
validates_presence_of :symptoms_start
def temp_rating=(temp_rating) @rating=temp_rating end
def temp_rating @rating end
end
admission.rb (model)
class Admission < ActiveRecord::Base has_one :treatment, :as=>:treatable belongs_to :hospital end
treatments_controller.rb
class TreatmentsController < ApplicationController requires_authentication :using => :authenticate, :include => [:new, :create, :update, :edit], :realm => 'Unburdenus' # GET /treatments # GET /treatments.xml def index @treatments = Treatment.find(:all)
respond_to do |format| format.html # index.rhtml format.xml { render :xml => @treatments.to_xml } end end
# GET /treatments/1 # GET /treatments/1.xml def show @treatment = Treatment.find(params[:id])
respond_to do |format| format.html # show.rhtml format.xml { render :xml => @treatment.to_xml } end end
# GET /treatments/new def new @user = User.current_user @treatment = Treatment.new @stylesheet_includes = ['reset-fonts- grids','default','glenn','datebocks_engine', 'calendar-blue'] @javascript_includes = ["prototype","scriptaculous",'moo.fx.js','accordion','application',"datebocks_engine", "calendar", "lang/calendar-en", "calendar-setup","fckeditor/ fckeditor"] end
# GET /treatments/1;edit def edit @treatment = Treatment.find(params[:id]) end
# POST /treatments/1;rate def rate if params[:id].nil? @treatment = Treatment.new @treatment.temp_rating=params[:rating] else @treatment = Treatment.find(params[:id]) Rating.delete_all(["rateable_type = 'Treatment' AND rateable_id = ? AND user_id = ?", @treatment.id, User.current_user.id]) @treatment.add_rating Rating.new(:rating => params[:rating], :user_id => User.current_user.id) end end
# POST /treatments # POST /treatments.xml def create @hospital = Hospital.find_or_create_by_name(params[:hospital] [:name]) @admission = Admission.new(:hospital=>@hospital) @treatment = Treatment.new(params[:treatment]) @treatment.condition = Condition.find_or_create_by_name(params[:condition][:name]) @treatment.user = User.current_user @treatment.treatable = @admission respond_to do |format| if @treatment.save flash[:notice] = 'Treatment was successfully created.' format.html { redirect_to user_url(User.current_user) } format.xml { head :created, :location => treatment_url(@treatment) } else format.html { @stylesheet_includes = ['reset-fonts- grids','default','glenn','datebocks_engine', 'calendar-blue'] @javascript_includes = ["prototype","scriptaculous",'moo.fx.js','accordion','application',"datebocks_engine", "calendar", "lang/calendar-en", "calendar-setup","fckeditor/ fckeditor"] render :action => "new" } format.xml { render :xml => @treatment.errors.to_xml } end end end
# PUT /treatments/1 # PUT /treatments/1.xml def update @treatment = Treatment.find(params[:id])
respond_to do |format| if @treatment.update_attributes(params[:treatment]) flash[:notice] = 'Treatment was successfully updated.' format.html { redirect_to treatment_url(@treatment) } format.xml { head :ok } else format.html { render :action => "edit" } format.xml { render :xml => @treatment.errors.to_xml } end end end
# DELETE /treatments/1 # DELETE /treatments/1.xml def destroy @treatment = Treatment.find(params[:id]) @treatment.destroy
respond_to do |format| format.html { redirect_to treatments_url } format.xml { head :ok } end end end
admissions_controller.rb
class AdmissionsController < ApplicationController # GET /admissions # GET /admissions.xml
def index @admissions = Admission.find(:all)
respond_to do |format| format.html { @stylesheet_includes = ['reset-fonts-grids','default','glenn'] } format.xml { render :xml => @admissions.to_xml } end end
# GET /admissions/1 # GET /admissions/1.xml def show @admission = Admission.find(params[:id])
respond_to do |format| format.html # show.rhtml format.xml { render :xml => @admission.to_xml } end end
# GET /admissions/new def new @admission = Admission.new end
# GET /admissions/1;edit def edit @admission = Admission.find(params[:id]) end
# POST /admissions # POST /admissions.xml def create @admission = Admission.new(params[:admission])
respond_to do |format| if @admission.save flash[:notice] = 'Admission was successfully created.' format.html { redirect_to admission_url(@admission) } format.xml { head :created, :location => admission_url(@admission) } else format.html { render :action => "new" } format.xml { render :xml => @admission.errors.to_xml } end end end
# PUT /admissions/1 # PUT /admissions/1.xml def update @admission = Admission.find(params[:id])
respond_to do |format| if @admission.update_attributes(params[:admission]) flash[:notice] = 'Admission was successfully updated.' format.html { redirect_to admission_url(@admission) } format.xml { head :ok } else format.html { render :action => "edit" } format.xml { render :xml => @admission.errors.to_xml } end end end
# DELETE /admissions/1 # DELETE /admissions/1.xml def destroy @admission = Admission.find(params[:id]) @admission.destroy
respond_to do |format| format.html { redirect_to admissions_url } format.xml { head :ok } end end end