zoukankan      html  css  js  c++  java
  • 如何在Rails6内通过Webpacker使用JavaScript; flatpicker日期时间组件选择器

    如何在Rails6内通过Webpacker使用JavaScript;  

    Rails6默认不再使用asset pipeline,改用Webpacker。

    文件结构变化:

    • 配置文件: webpacker.yml
    • package.json查看安装的js库,可以使用yarn命令或者npm
    • app/assets/javascript不会再generate。
    • app/javascript/packs/application.js:packs文件夹管理独立安装的包。

     下图是默认生成的文件夹。包含了rails UJS库, turbolinks, atcivestorage, channels

    添加了channels文件夹。

    如何安装一个packer:

    # 例如
    rails webpacker:install:stimulus
    Appending Stimulus setup code to /Users/.../tailwindapp/app/javascript/packs/application.js
          append  app/javascript/packs/application.js
    # 增加了一行代码
    import "controllers"
    Creating controllers directory
          create  app/javascript/controllers
          create  app/javascript/controllers/hello_controller.js
          create  app/javascript/controllers/index.js
    Installing all Stimulus dependencies
             run  yarn add stimulus from "."
    #安装依赖包,可以在yarn.lock中看到详细说明

    使用Flatpickr

    一个轻量化的datetime picker。

    包括使用JS和CSS

    https://flatpickr.js.org/

    安装:

    # using npm install
    npm i flatpickr --save
    
    # 其他
    yarn add flatpickr
    
    #cdn也可以

    use

    推荐直接使用元素,或者选择器:

    // If using flatpickr in a framework, its recommended to pass the element directly
    flatpickr(element, {});
    
    // Otherwise, selectors are also supported
    flatpickr("#myID", {});
    
    // creates multiple instances
    flatpickr(".anotherSelector");

     

    Rails中的使用

    1. 生成一个Post

      下面的命令仍然会生成assetpipeline的文件: stylesheets/scaffolds.scss,如果不使用就删除掉。

    rails g scaffold Post title publish_date:date

    2. yarn add flatpickr

    javascript/packs/application.js内添加:

    import flatpickr from "flatpickr";
    #只使用flatpickr的CSS样式
    require("flatpickr/dist/flatpickr.css")
    #或者使用不同的样式主题
    #require("flatpickr/dist/themes/light.css")

    document.addEventListener("turbolinks:load", () => {
    flatpickr("[data-behavior='flatpickr']", {
    altInput: true,
    altFormat: "F j, Y",
    dateFormat: "Y-m-d"
    })
    })

    在application.html.erb添加:(使用webPacker CSS)

    <%= stylesheet_pack_tag 'application', media: "all", ...%>

    在对应的视图文件内添加:

    <div>
      <%= form.text_field :publish_date, data: {behavior: 'flatpickr'}%>
    </div>

    #生成<input data-behavior="flatpickr" type="hidden" name="post[publish_date]" id="post_publish_date" class="flatpickr-input">

      

  • 相关阅读:
    hdu2328 Corporate Identity
    hdu1238 Substrings
    hdu4300 Clairewd’s message
    hdu3336 Count the string
    hdu2597 Simpsons’ Hidden Talents
    poj3080 Blue Jeans
    poj2752 Seek the Name, Seek the Fame
    poj2406 Power Strings
    hust1010 The Minimum Length
    hdu1358 Period
  • 原文地址:https://www.cnblogs.com/chentianwei/p/10728577.html
Copyright © 2011-2022 走看看