我在模态中有一个带有 3 个输入的表单。前两个是小时,当第一个小时发生变化时,我需要更新第二个小时的值。
我已成功将 Stimulus 控制器连接到表单,并且可以在控制台中显示它。这是我的控制器代码:
import { Controller } from "stimulus"
export default class extends Controller {
static targets = [ 'hour_start', 'hour_finish' ];
connect() {
console.log(this.hour_startTarget);
}
update() {
alert('Changed');
}
}
Run Code Online (Sandbox Code Playgroud)
连接工作正常并在控制台上打印:
<input class="form-control string required form-control datetimepicker" data-target="dtpicker.hour_start" data-action="change->dtpicker#update" required="required" aria-required="true" type="text" name="order[hour_start]" id="order_hour_start">
Run Code Online (Sandbox Code Playgroud)
但是当我更改此输入的值时,警报不会弹出......
我还尝试忽略更改,因为它是输入的默认操作,但警报仍然没有显示。
还尝试在 js 上使用普通事件监听器,如下所示:
const handleHourStart = () => {
let hourStart = document.getElementById('order_hour_start');
hourStart.addEventListener('change', () => {
alert('Changed');
})
}
Run Code Online (Sandbox Code Playgroud)
但还是不行。奇怪的是,点击事件的行为符合我的预期,但变化却没有......
有任何想法吗?
我有一个 Rails 6.0.3.5 API,我没有使用 Devise 进行身份验证。当我尝试访问 sidekiq UI 时,它大喊:
Sidekiq::Web needs a valid Rack session for CSRF protection. If this is a Rails app, make sure you mount Sidekiq::Web *inside* your application routes: Rails.application.routes.draw do mount Sidekiq::Web => "/sidekiq" .... end
Run Code Online (Sandbox Code Playgroud)
但实际上我的路线是这样的:
Rails.application.routes.draw do
mount Sidekiq::Web => '/sidekiq'
namespace :api do
namespace :v1 do
...
end
end
end
Run Code Online (Sandbox Code Playgroud)
我已经config/initializers/sidekiq.rb
像这样保护了用户/通行证的路线:
require 'sidekiq'
require 'sidekiq/web'
Sidekiq::Web.use(Rack::Auth::Basic) do |user, password|
Rack::Utils.secure_compare(::Digest::SHA256.hexdigest(user), ::Digest::SHA256.hexdigest(ENV["SIDEKIQ_USER"])) &
Rack::Utils.secure_compare(::Digest::SHA256.hexdigest(password), ::Digest::SHA256.hexdigest(ENV["SIDEKIQ_PASSWORD"]))
end
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我完全是 Django 的初学者(来自 Node/Express 背景)。我需要调用使用基本授权的 API。
为了发出请求,我正在使用请求模块,但我不知道在哪里传递身份验证标头。在 Axios 中,我通常设置默认标头,如下所示:
import axios from 'axios'
const token = `Basic ${Buffer.from(`${process.env.API_USERNAME}:${process.env.API_PASSWORD}`).toString('base64')}`;
axios.defaults.baseURL = process.env.API_URL;
axios.defaults.headers.common['Authorization'] = token;
Run Code Online (Sandbox Code Playgroud)
我在 Django 中的服务:
from base64 import b64encode
import requests
import environ
environ.Env.read_env()
endpoint = 'some url'
credentials = f"{env('API_USERNAME')}:{env('API_PASSWORD')}"
encodedCredentials = str(b64encode(credentials.encode("utf-8")), "utf-8")
auth = f'"Authorization": "Basic {encodedCredentials}"'
def get_api_data():
return requests.get(endpoint).json()
Run Code Online (Sandbox Code Playgroud)
我应该如何传递标题?
我正在尝试在 application.js 下正确导入供应商 js 文件app/javascript/packs/application.js
这是当前的架构:
可以看到,我选择将供应商 js 文件放入app/javascrip/plugins/
我的结构application.js
如下:
// Rails Internals
require("@rails/ujs").start();
require("turbolinks").start();
require("@rails/activestorage").start();
require("channels");
// Libraries/Vendor-plugins
require("jquery");
import 'bootstrap';
require('../plugins/chosen.min.js');
require('../plugins/magnific-popup.min.js');
require('../plugins/owl.carousel.min.js');
require('../plugins/rangeSlider');
require('../plugins/sticky-kit.min.js');
require('../plugins/masonry.min.js');
require('../plugins/mmenu.min.js');
require('../plugins/tooltips.min.js');
require('../plugins/custom');
// Custom functions
// import { myFunction } from '../components/myScrip';
document.addEventListener('turbolinks:load', () => {
});
Run Code Online (Sandbox Code Playgroud)
custom.js
通过这样做,位于 中的文件应该可以访问 jQuery app/javascript/plugins/custom.js
,对吧?
为了清楚起见, 的custom.js
形状如下:
(function ($) {
"use strict";
$(document).ready(function () {
// ...
}
})(this.jQuery);
Run Code Online (Sandbox Code Playgroud)
但是当我运行服务器时,找不到 jQuery:
yarn add jquery@3.5.1 bootstrap@3.4.1
我通过(供应商需要的旧版本)添加了 jQuery …