В Rails 7 webpack устарел, и по умолчанию существует конвейер assest для рендеринга содержимого javaScript (importmap), и добавление элементов javaScript в ваш проект стало сложной проблемой.

теперь создайте файл stripe.rb в config/initializers. Я собираюсь показать, как легко вы можете создать базу вашего проекта Rails 7, чтобы добавить все jQuery| JavaScript| начальная загрузка | Cсс.

Создать новое приложение rails | добавить следующие изменения в существующее приложение | Переход на версию rails 7

rails new demo-7

ваше новое приложение с rails 7 и ruby ​​3.0 будет создано. перейдите в каталог demo-7.
Запустите сервер rails и перейдите на localhost:3000, чтобы увидеть свою домашнюю страницу.
создайте домашний контроллер, чтобы увидеть изменения.

rails g controller home index;

это изменит следующие файлы.

app/controllers/home_controller.rb
app/helpers/home_helper.rb
app/views/home/index.html.erb
test/controllers/home_controller_test.rb
routes.rb

добавьте root ‘home#index’ в route.rb, чтобы сделать страницу корневой.
запустите приложение и посмотрите свою индексную страницу.

Теперь я добавлю загрузочный файл:
::
я добавлю панель навигации, чтобы увидеть изменения в загрузочном файле:
перейдите в gemfile и добавьте

gem "bootstrap"
gem "sassc-rails"

Запустите bundle install
Переименуйте app/assets/stylesheets/application.css в app/assets/stylesheets/application.scss
Удалите
все содержимое и добавьте в app/assets/stylesheets/application.scss

@import "bootstrap";

попал в файл app/javascript/application.js и добавил

import "popper"
import "bootstrap"

добавить в app/views/layouts/application.html.erb после основного текста.

<body>
    <%= render 'shared/navbar' %>
    <%= yield %>
</body>

Создайте app/views/shared/_navbar.html.erb новый файл и вставьте

<nav class="navbar navbar-expand-lg bg-light">
  <div class="container-fluid">
    <a class="navbar-brand" href="#">Navbar</a>
    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarSupportedContent">
      <ul class="navbar-nav me-auto mb-2 mb-lg-0">
        <li class="nav-item">
          <a class="nav-link active" aria-current="page" href="#">Home</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Link</a>
        </li>
        <li class="nav-item dropdown">
          <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
            Dropdown
          </a>
          <ul class="dropdown-menu">
            <li><a class="dropdown-item" href="#">Action</a></li>
            <li><a class="dropdown-item" href="#">Another action</a></li>
            <li><hr class="dropdown-divider"></li>
            <li><a class="dropdown-item" href="#">Something else here</a></li>
          </ul>
        </li>
        <li class="nav-item">
          <a class="nav-link disabled">Disabled</a>
        </li>
      </ul>
      <form class="d-flex" role="search">
        <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
        <button class="btn btn-outline-success" type="submit">Search</button>
      </form>
    </div>
  </div>
</nav>

посетите config/importmap.rb и обновите его как

# Pin npm packages by running ./bin/importmap

pin "application", preload: true
pin "@hotwired/turbo-rails", to: "turbo.min.js", preload: true
pin "@hotwired/stimulus", to: "stimulus.min.js", preload: true
pin "@hotwired/stimulus-loading", to: "stimulus-loading.js", preload: true
pin_all_from "app/javascript/controllers", under: "controllers"

pin "popper", to: 'popper.js', preload: true
pin "bootstrap", to: 'bootstrap.min.js', preload: true

добавить config/initializers/assets.rb

# Be sure to restart your server when you modify this file.

# Version of your assets, change this if you want to expire all your assets.
Rails.application.config.assets.version = "1.0"

# Add additional assets to the asset load path.
# Rails.application.config.assets.paths << Emoji.images_path
Rails.application.config.assets.precompile += %w( bootstrap.min.js popper.js)

# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in the app/assets
# folder are already added.
# Rails.application.config.assets.precompile += %w( admin.js admin.css )

Запустите ваше приложение, и вы увидите что-то вроде этого, ваш загрузчик успешно установлен:

Теперь мы добавим jquery | jquery-ui и отличный шрифт

добавить следующий драгоценный камень в свой gemfile

gem "bootstrap"
gem "sassc-rails"
gem 'jquery-rails'
gem 'jquery-ui-rails'
gem "sassc-rails"

запустить пакетную установку
Перейдите в app/assets/stylesheets/application.scss и добавьте:

@import "bootstrap";
@import "jquery-ui.css";

Перейдите в app/javascript/application.js и добавьте:

// Configure your import map in config/importmap.rb. Read more: https://github.com/rails/importmap-rails
import "@hotwired/turbo-rails"
import "controllers"
import "popper"
import "bootstrap"
import "@fortawesome/fontawesome-free";
import "jquery"
import "jquery_ujs"
import "./jquery_ui"

Создайте app/javascript/controllers/hello_controller.js

import { Controller } from "@hotwired/stimulus"

export default class extends Controller {
  connect() {
    this.element.textContent = "Hello World!"
    
  }
}

Создайте app/javascript/controllers/home_controller.js

import { Controller } from "@hotwired/stimulus"

// Connects to data-controller="home"
export default class extends Controller {
  connect() {
    console.log("home controller has been connected"); 

       $( "#datepicker" ).datepicker();


    var initial_val = 0;
    $("#btn-click").click(function (e) { 
      e.preventDefault();
      var date_value = $("#datepicker").val();
      alert(`button has been clicked ${initial_val} and date ${date_value} `);
      initial_val+= 1;
    });


      $( function() {
    $( "#draggable" ).draggable();
  } );


  
  }
}

Создайте app/javascript/jquery_ui.js и добавьте:

//= require jquery-ui

Перейдите в app/views/home/index.html.erb и сделайте это:

<div class="container"> 

    <h3>Fontawesome icon </h3>
    <p>
        <i class="fa-solid fa-flag"></i>
        <i class="fa-brands fa-amazon"></i>
        <i class="fa-regular fa-bell"></i>
    </p>

    <br>
    <hr>

    <div data-controller="home">
        <h6> Pick date using jQuery Datepicker </h6>
        <p>Date: <input type="text" id="datepicker"></p>
        <br>
        <hr>
        <h6> JQuery Draggable Element </h6>
        <div style="width: 300px; height: 100px;" id="draggable" class="ui-widget-content border border-danger">
            <p style="width: 300px; height: 100px;">Drag me around</p>
        </div>
        <br>
        <hr>
        <h6> Click Event using JQuery </h6>
        <button id="btn-click"> Click Me </button>
    </div>


</div>

сделайте ваш config/importmap.rb лайком

# Pin npm packages by running ./bin/importmap

pin "application", preload: true
pin "@hotwired/turbo-rails", to: "turbo.min.js", preload: true
pin "@hotwired/stimulus", to: "stimulus.min.js", preload: true
pin "@hotwired/stimulus-loading", to: "stimulus-loading.js", preload: true
pin_all_from "app/javascript/controllers", under: "controllers"

pin "popper", to: 'popper.js', preload: true
pin "bootstrap", to: 'bootstrap.min.js', preload: true
pin "@fortawesome/fontawesome-free", to: "@fortawesome/[email protected]/js/all.js">https://ga.jspm.io/npm:@fortawesome/[email protected]/js/all.js"

pin "jquery", to: "jquery.min.js", preload: true
pin "jquery_ujs", to: "jquery_ujs.js", preload: true
pin "jquery-ui", to: "jquery-ui.min.js", preload: true

сделайте свой config/initializers/assets.rb

Rails.application.config.assets.precompile += %w( bootstrap.min.js popper.js jquery.min.js jquery_ujs.js jquery-ui.min.js)

Запустите приложение и перейдите на домашнюю страницу

Теперь у вас есть jQuery| JavaScript| начальная загрузка | CSS в Rails 7

Удачного кодирования 😃 😄

#Rails7 #ruby #код #jquery #JavaScript #Css #bootstrap