Friday, June 20, 2025
HomeRuby On RailsScaffold Templates | Drifting Ruby

Scaffold Templates | Drifting Ruby


# Terminal
rails g scaffold customers first_name last_name e-mail --force
wget https://uncooked.githubusercontent.com/rails/rails/predominant/railties/lib/rails/turbines/erb/scaffold/templates/present.html.erb.tt
wget https://uncooked.githubusercontent.com/rails/rails/predominant/railties/lib/rails/turbines/erb/scaffold/templates/partial.html.erb.tt
wget https://uncooked.githubusercontent.com/rails/rails/predominant/railties/lib/rails/turbines/erb/scaffold/templates/index.html.erb.tt
wget https://uncooked.githubusercontent.com/rails/rails/predominant/railties/lib/rails/turbines/erb/scaffold/templates/edit.html.erb.tt
wget https://uncooked.githubusercontent.com/rails/rails/predominant/railties/lib/rails/turbines/erb/scaffold/templates/new.html.erb.tt
wget https://uncooked.githubusercontent.com/rails/rails/predominant/railties/lib/rails/turbines/erb/scaffold/templates/_form.html.erb.tt
# lib/templates/erb/scaffold/index.html.erb.tt
<%% content_for :title, "<%= human_name.pluralize %>" %>

<div class="w-full">
  <%% if discover.current? %>
    <p class="py-2 px-3 bg-green-50 mb-5 text-green-500 font-medium rounded-md inline-block" id="discover"><%%= discover %></p>
  <%% finish %>

  <div class="flex justify-between items-center">
    <h1 class="font-bold text-4xl"><%= human_name.pluralize %></h1>
    <%%= link_to "New <%= human_name.downcase %>", new_<%= singular_route_name %>_path, class: "rounded-md px-3.5 py-2.5 bg-blue-600 hover:bg-blue-500 text-white block font-medium" %>
  </div>

  <div id="<%= plural_table_name %>" class="min-w-full divide-y divide-gray-200 space-y-5">
    <%% if @<%= plural_table_name %>.any? %>
      <div class="orverlow-x-auto">
        <desk class="min-w-full divide-y divide-gray-200">
          <thead class="bg-gray-50">
            <tr>
              <%- attributes.reject(&:password_digest?).every do |attribute| -%>
              <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"><%= attribute.human_name %></th>
              <%- finish -%>
              <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Actions</th>
            </tr>
          </thead>
          <tbody class="bg-white divide-y divide-gray-200">
            <%% @<%= plural_table_name %>.every do |<%= singular_table_name %>| %>
              <tr class="hover:bg-gray-50">
                <%- attributes.reject(&:password_digest?).every do |attribute| -%>
                <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-700">
                  <%- if attribute.attachment? -%>
                  <%% if <%= singular_name %>.<%= attribute.column_name %>.hooked up? %>
                    <%%= link_to <%= singular_name %>.<%= attribute.column_name %>.filename, <%= singular_name %>.<%= attribute.column_name %>, class: "text-blue-600 hover:text-blue-900" %>
                  <%% finish %>
                  <% elsif attribute.attachments? -%>
                  <%% <%= singular_name %>.<%= attribute.column_name %>.every do |<%= attribute.singular_name %>| %>
                    <div class="mb-1"><%%= link_to <%= attribute.singular_name %>.filename, <%= attribute.singular_name %>, class: "text-blue-600 hover:text-blue-900" %></div>
                  <%% finish %>
                  <% else -%>
                  <%%= <%= singular_name %>.<%= attribute.column_name %> -%>
                  <%- finish -%>
                </td>
                <%- finish -%>
                <td class="px-6 py-4 whitespace-nowrap text-right text-sm font-medium">
                  <%%= link_to "View", <%= singular_name %>, class: "text-blue-600 hover:text-blue-900 mr-3" %>
                  <%%= link_to "Edit", <%= edit_helper(singular_name, kind: :path) %>, class: "text-indigo-600 hover:text-indigo-900" %>
                </td>
              </tr>
            <%% finish %>
          </tbody>
        </desk>
      </div>
    <%% else %>
      <div class="px-6 py-4 text-center text-gray-500">
        No <%= human_name.pluralize.downcase %> discovered. Create your first one now.
      </div>
    <%% finish %>
  </div>
</div>
# lib/templates/rails/scaffold_controller/controller.rb.tt
<% module_namespacing do -%>
class <%= controller_class_name %>Controller < ApplicationController
  before_action :set_<%= singular_table_name %>, solely: %i[ show edit update destroy ]
  before_action :user_signed_in?

  def index
    @<%= plural_table_name %> = <%= orm_class.all(class_name) %>
  finish

  def present
  finish

  def new
    @<%= singular_table_name %> = <%= orm_class.construct(class_name) %>
  finish

  def edit
  finish

  def create
    @<%= singular_table_name %> = <%= orm_class.construct(class_name, "#{singular_table_name}_params") %>

    if @<%= orm_instance.save %>
      redirect_to <%= redirect_resource_name %>, discover: <%= %("#{human_name} was efficiently created.") %>
    else
      render :new, standing: :unprocessable_entity
    finish
  finish

  def replace
    if @<%= orm_instance.replace("#{singular_table_name}_params") %>
      redirect_to <%= redirect_resource_name %>, discover: <%= %("#{human_name} was efficiently up to date.") %>, standing: :see_other
    else
      render :edit, standing: :unprocessable_entity
    finish
  finish

  def destroy
    @<%= orm_instance.destroy %>
    redirect_to <%= index_helper %>_path, discover: <%= %("#{human_name} was efficiently destroyed.") %>, standing: :see_other
  finish

  personal

  def set_<%= singular_table_name %>
    @<%= singular_table_name %> = <%= orm_class.discover(class_name, "params.anticipate(:id)") %>
  finish

  def <%= "#{singular_table_name}_params" %>
    <%- if attributes_names.empty? -%>
    params.fetch(:<%= singular_table_name %>, {})
    <%- else -%>
    params.anticipate(<%= singular_table_name %>: [ <%= permitted_params %> ])
    <%- finish -%>
  finish
finish
<% finish -%>
RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments