- Create
- Read
- Update
- Delete
- create new rails application
rails new rails_crud_sample_app
- chnage location
cd rails_crud_sample_app
- create model
rails g model sample name
- create controller
rails g controller samples index show new edit
- config/routes.rb
Rails.application.routes.draw do
resources :samples
end
or
Rails.application.routes.draw do
get 'samples/index'
get 'samples/show'
get 'samples/new'
get 'samples/edit'
end
rake db:migrate
7.Get / Show the list
app/controllers/samples_controller.rb
def index
@samples = Sample.all
end
views/samples/index.html.erb
<ul>
<% @samples.each do |sample| %>
<li><%= link_to sample.name, sample_path(sample) %></li>
<% end %>
</ul>
app/controllers/samples_controller.rb
def show
@sample = Sample.find(params[:id])
end
views/samples/show.html.erb
<h1><%= @sample.name %></h1>
- create a sample record
app/controllers/samples_controller.rb
def new
@sample = Sample.new
end
def create
sample = Sample.create(sample_params)
redirect_to samples_path
end
private
def sample_params
params.require(:sample).permit(:name)
end
views/samples/new.html.erb
<h3>Create a Sample</h3>
<%= form_with model: @sample do |form| %>
<%= form.text_field :name, placeholder: "name" %>
<%= form.submit %>
<% end %>
- Update part
app/controllers/samples_controller.rb
def edit
@sample = Sample.find(params[:id])
end
def update
@sample = Sample.find(params[:id])
@Sample.update(sample_params)
redirect_to sample_path(@sample)
end
private
def sample_params
params.require(:sample).permit(:name)
end
views/samples/edit.html.erb
<h3>Update Sample Details</h3>
<%= form_with model: @sample do |form| %>
<%= form.text_field :name, placeholder: "name" %>
<%= form.submit %>
<% end %>
- Delete part
app/controllers/samples_controller.rb
def destroy
@sample = Sample.find(params[:id])
@sample.destroy
redirect_to samples_path
end
views/samples/show.html.erb
<%= link_to 'Remove', @sample, method: :delete, data: { confirm: 'Are you sure?' } %>