I have a users (Devise) and apointments table. I want to add a link in
my application.html.erb to link to that particular user's appointment,
so they can have the option to change it. (As a customer).
I have a similar link set up for them to edit their profile.
<%= link_to 'My Appointments',
appointment_path(current_user.appointment) if current_user.appointment
%>
Profile works:
<%= link_to 'My Profile', profile_path(current_user.profile) if
current_user.profile %>
However the appointments link won't work. It gives the error:
Couldn't find Appointment with
'id'=#<Appointment::ActiveRecord_Associations_CollectionProxy:0x007ffaa5999b28>
Appointment belongs to user
user has many appointments
profile belongs to user
user has one profile
My code is as follows:
def index
@appointments = Appointment.all
end
def show
@appointment = Appointment.find(params[:id])
<%= link_to ‘My Appointments’,
appointment_path(current_user.appointment) if current_user.appointment
%> The problem is current_user.appointment is returing more than one appointments. So if u re concerned about the last ap then do this: current_user.appointment.last
I have a users (Devise) and apointments table. I want to add a link in
my application.html.erb to link to that particular user's appointment,
so they can have the option to change it. (As a customer).
I have a similar link set up for them to edit their profile.
<%= link_to 'My Appointments',
appointment_path(current_user.appointment) if current_user.appointment
%>
Profile works:
<%= link_to 'My Profile', profile_path(current_user.profile) if
current_user.profile %>
However the appointments link won't work. It gives the error:
Couldn't find Appointment with
'id'=#<Appointment::ActiveRecord_Associations_CollectionProxy:0x007ffaa5999b28>
Appointment belongs to user
user has many appointments
This is why the link doesn't work. A user (current_user) does not have _an_ appointment, she has _many_ appointments. If you want the latest one, then use
current_user.appointments.order(:appointment_date).last if current_user.appointments.any?
You could put that in a helper so it doesn't make your views so ungainly.
Thanks for your help, however it wont' work.
I put
<%= link_to 'My
appointment',current_user.appointments.order(:appointment_date).last%>
ERROR:
SQLite3::SQLException: no such column: appointments.appointment_date:
SELECT "appointments".* FROM "appointments" WHERE
"appointments"."user_id" = ? ORDER BY "appointments"."appointment_date"
DESC LIMIT 1
ERROR:
SQLite3::SQLException: no such column: appointments.appointment_date:
This is telling you that there is no appointment_date column in your
appointments table.
replace appointment_date with whatever you have named the appointment
date column in the appointments table. I think you mentioned it was
called date in another post, so:
Unfortunately, I have already tried that. When I click on the link it
does nothing. It stays on whatever page i'm on but won't do
anything.It's very strange
User has a one to one relationship with profile
user has a one to many relationship with appointment
Someone on this board told me my database is set up badly, but didn't
explain. Do you think this is an issue?
# encoding: UTF-8
# This file is auto-generated from the current state of the database.
Instead
# of editing this file, please use the migrations feature of Active
Record to
# incrementally modify your database, and then regenerate this schema
definition.
Unfortunately, I have already tried that. When I click on the link it
does nothing. It stays on whatever page i'm on but won't do
anything.It's very strange
Johnny Stewart wrote in post #1184507:
Ruth Stephenson wrote in post #1184504:
ERROR:
SQLite3::SQLException: no such column: appointments.appointment_date:
This is telling you that there is no appointment_date column in your
appointments table.
replace appointment_date with whatever you have named the appointment
date column in the appointments table. I think you mentioned it was
called date in another post, so:
This is where you need to be looking around - if it doesn't do anything
on clicking then you need to work out why that is (does the current user
have any appointments? are you attempting to
render this with javascript? does the template exist?).
The errors you are currently coming across are fundamental. I think you
need to do as others have suggested and work through a tutorial or
preferably 2 or 3, start to finish. When you have done that these errors
will be easy to solve.