I created a form with custom routing for orders with resources :orders , only: [:new, :create]
and i want the users to click the submit button and the form fields should save the data into database, but when i click submit button, inside of the terminal it shows unpermitted params
can anyone point out the mistake what i am doing in order for it to save into database
orders_controller.rb
class OrdersController < ApplicationController
# GET to /orders/new
def new
@order = Order.new
end
# POST to /orders
def create
@order = Order.new(order_params)
if @order.save
redirect_to root_path, notice: "Order saved"
else
redirect_to root_path, notice: "Error Occured"
end
end
private
def order_params
params.require(:order).permit(:paper_size, :color, :quantity, :type, :description, :first_name, :last_name, :phone_numnber, :email, files: [] )
end
end
order.rb (MODEL)
class Order < ApplicationRecord
belongs_to :admin
validates :paper_size, presence: true
validates :color, presence: true
validates :quantity, presence: true
validates :type, presence: true
validates :first_name, presence: true
validates :last_name, presence: true
validates :phone_number, presence: true
validates :email, presence: true
has_many_attached :files
end
orders/new.html.erb (VIEWS)
<%= form_for @order do |f| %>
<div class="container">
<h1 class="text-center">Order From Home!</h1>
<div class="row">
<div class="col-md-4 col-md-offset-4">
<%= f.label :first_name%>
<%= f.text_field :first_name, class:"form-control" %><br/>
<%= f.label :last_name %>
<%= f.text_field :last_name, class:"form-control" %><br/>
<%= f.label :phone_number %>
<%= f.text_field :phone_number, class:"form-control" %><br/>
<%= f.label :email %>
<%= f.text_field :email, class:"form-control" %><br/>
<%= f.label :files %>
<%= f.file_field :files, multiple: true %><br/>
<%= f.label :paper_size %>
<%= f.select :paper_size, ['A4', 'B4'], { prompt: 'Select' }, class:'form-select' %><br/>
<%= f.label :color %>
<%= f.select :color, ['Black & White', 'Color'], { prompt: 'Select' }, class:'form-select' %><br/>
<%= f.label :quantity %>
<%= f.select :quantity, options_for_select(0..500), { prompt: "Select" }, class:'form-select' %><br/>
<%= f.label :description %>
<%= f.text_area :description, class:"form-control" %><br/>
<div class="btn-order">
<%= f.submit %>
</div>
</div>
</div>
</div>
<% end %>
routes.rb
Rails.application.routes.draw do
devise_for :admins
devise_scope :admin do
get '/admins/sign_out' => 'devise/sessions#destroy'
end
root 'pages#home'
get '/about', to: 'pages#about'
resources :orders , only: [:new, :create]
resources :admins, only: [:index]
end
You typed
phone_numnber
, notphone_number
.