ruby on rails - param is missing or the value is empty: user when tring to add a user -


hi know has been asked many times none of me.

i'm building online clinic website based on ruby on rails. when user wants sign chooses either doctor or patient. after sign-in form appears. in db, there's general table users common attributes name, gender etc. in table user type in set. doctor , patient there 2 separate tables specific attributes. here's problem! when signing error: raise parametermissing.new(key)

here's thee code doctor_controller.rb:

class doctorscontroller < applicationcontroller before_action :set_doctor, only: [:show, :edit, :update, :destroy] #before_save :set_type # /doctors # /doctors.json def index   @doctors = doctor.all end  # /doctors/1 # /doctors/1.json def show end  # /doctors/new def new    @doctor = doctor.new   @user=user.new   @user.user_type='2' end  # /doctors/1/edit def edit end  # post /doctors # post /doctors.json def create    @user=user.new(user_params)    respond_to |format|   if @user.save     format.html { redirect_to @user, notice: 'doctor created.' }     format.json { render :show, status: :created, location: @doctor }   else     format.html { render :new }     format.json { render json: @user.errors, status: :unprocessable_entity }   end end  @doctor = doctor.new(doctor_params)   respond_to |format|   if @doctor.save     format.html { redirect_to @doctor, notice: 'doctor created.' }     format.json { render :show, status: :created, location: @doctor }   else     format.html { render :new }     format.json { render json: @doctor.errors, status: :unprocessable_entity }   end end end  # patch/put /doctors/1 # patch/put /doctors/1.json def update   respond_to |format|   if @doctor.update(doctor_params)     format.html { redirect_to @doctor, notice: 'doctor updated.' }     format.json { render :show, status: :ok, location: @doctor }   else     format.html { render :edit }     format.json { render json: @doctor.errors, status: :unprocessable_entity }   end end end  # delete /doctors/1 # delete /doctors/1.json def destroy   @doctor.destroy   respond_to |format|   format.html { redirect_to doctors_url, notice: 'doctor destroyed.' }   format.json { head :no_content }   end end  private   # use callbacks share common setup or constraints between actions.   def set_doctor     @doctor = doctor.find(params[:id])     @user = user.find(params[:id])   end   def set_type     @user.user_type="2"   end     # never trust parameters scary internet, allow white list through.   def doctor_params     params.require(:doctor).permit(:user_id, :doctronum, :adderess, :sepciality, :records)   end    def user_params     params.require(:user).permit(:user_type, :username, :password, :name, :family, :gender, :phone, :city, :profilepicture)   end    end 

and here code signup form:

<%= form_for(@user) |f| %>   <% if @user.errors.any? %>   <div id="error_explanation">     <h2><%= pluralize(@user.errors.count, "error") %> prohibited user being saved:</h2>      <ul>       <% @user.errors.full_messages.each |message| %>         <li><%= message %></li>       <% end %>     </ul>   </div>   <% end %>     <div class="field">   <%= f.label :username, "email" %><br>   <%= f.email_field :username %>   </div>     <div class="field">     <%= f.label :password %><br>     <%= f.password_field :password %>   </div>   <div class="field">     <%= f.label :name %><br>     <%= f.text_field :name %>   </div>   <div class="field">     <%= f.label :family %><br>     <%= f.text_field :family %>   </div>   <div class="field">      <%= f.label :gender %><br>      <%= f.text_field :gender %>   </div>   <div class="field">      <%= f.label :phone %><br>      <%= f.text_field :phone %>   </div>   <div class="field">      <%= f.label :city %><br>      <%= f.text_field :city %>   </div>     <% end %>     <%= form_for(@doctor) |f| %>       <% if @doctor.errors.any? %>       <div id="error_explanation">       <h2><%= pluralize(@doctor.errors.count, "error") %> prohibited doctor being saved:</h2>        <ul>          <% @doctor.errors.full_messages.each |message| %>          <li><%= message %></li>       <% end %>       </ul>      </div>      <% end %>       <div class="field">          <%= f.label :doctronum %><br>          <%= f.text_field :doctronum %>      </div>      <div class="field">          <%= f.label :adderess %><br>          <%= f.text_field :adderess %>      </div>      <div class="field">          <%= f.label :sepciality %><br>          <%= f.text_field :sepciality %>      </div>      <div class="field">          <%= f.label :records %><br>          <%= f.text_field :records %>      </div>      <div class="actions">          <%= f.submit %>      </div>     <% end %> 

i know it's much. i'd thankful

there no f.submit button form_for(@user), whenever press submit button, form_for(@doctor)'s submit button gets called. hence, params sent forward, include doctor, , never include user. code in create method expects params have user in it: @user = user.new(user_params) - therefore, generating param missing or value empty: user.

apart it, not following practices. controller name doctorscontroller, mixing user's code. should have 2 separate controllers: doctorscontroller, userscontroller, , accordingly 2 different views.


Comments

Popular posts from this blog

powershell Start-Process exit code -1073741502 when used with Credential from a windows service environment -

twig - Using Twigbridge in a Laravel 5.1 Package -

c# - LINQ join Entities from HashSet's, Join vs Dictionary vs HashSet performance -