I'm working on a website where users can input hours, and supervisors can approve or deny them, but I keep getting this error: Unpermitted parameter: :supervisor
I've tried changing the has_many relationships, changing the parameters of the supervisors like Nested attributes unpermitted parameters said, but to no avail.
my hours_controller.rb (I'm getting the error here)
def create
@hour = current_user.hours.build(hour_params)
@supervisor = Supervisor.find_by(params[:email])
if @hour.save
flash[:info] = "Waiting for approve"
redirect_to current_user
end
end
private
def hour_params
params.require(:hour).permit(:content, :approved)
end
my hour.rb
class Hour < ApplicationRecord
belongs_to :user
belongs_to :supervisor
default_scope -> { order(created_at: :desc) }
validates :user_id, presence: true
validates :content, :inclusion => 1..100
validates :approved, presence: true, default: false
end
my supervisor_controller.rb
class SupervisorsController < ApplicationController
def new
@supervisor = Supervisor.new
end
def create
Supervisor.new = Supervior.create(supervisor_params)
if @supervisor.save
flash[:info] = "Please check your email to activate your account"
redirect_to root_url
else
render 'new'
end
end
def home
end
def hours
end
private
def supervisor_params
params.require(:supervisor).permit(:id, :first_name, :last_name, :email, :address, :telephone, :role, :organization, :password, :password_confirmation, :signature, { hour: [:content, :approved]})
end
end
my supervisor.rb
class Supervisor < ApplicationRecord
has_many :hours, dependent: :destroy
validates :first_name, presence: true
validates :last_name, presence: true
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, format: {with: VALID_EMAIL_REGEX }, uniqueness: { case_sensitive: false }
validates :address, presence: true
validates :telephone, presence: true
validates :role, presence: true
validates :organization, presence: true
has_secure_password
validates :password, presence: true, length: { minimum: 6 }
end
and my html for the actual form
<%= form_for @hour, url: hours_path do |hour_builder| %>
<%= render 'shared/error_messages', object: hour_builder.object %>
<%= hour_builder.label :content, "Hours to input" %>
<%= hour_builder.text_field :content, class: 'form-control' %>
<%= hour_builder.simple_fields_for @supervisor do |supervisor_builder| %>
<%= render 'shared/error_messages', object: supervisor_builder.object %>
<%= supervisor_builder.label :first_name, "First name of supervisor" %>
<%= supervisor_builder.text_field :first_name, class: 'form-control' %>
<%= supervisor_builder.label :email, "Email of supervisor" %>
<%= supervisor_builder.text_field :email, class: 'form-control' %>
<%= supervisor_builder.label :telephone, "Telephone number of Supervisor" %>
<%= supervisor_builder.text_field :telephone, class: 'form-control' %>
<% end %>
<%= hour_builder.submit 'Log Hours', class: 'btn btn-success' %>
<% end %>
`