在我的Rails控制器中使用强参数,如何声明允许的参数可以是a String还是Array?
我强大的参数:
class SiteSearchController < ApplicationController
[...abbreviated for brevity...]
private
def search_params
params.fetch(:search, {}).permit(:strings)
end
end
Run Code Online (Sandbox Code Playgroud)
我想要POST字符串搜索为String或作为Array:
要搜索一件事:
{
"strings": "search for this"
}
Run Code Online (Sandbox Code Playgroud)
或者,搜索多个东西:
{
"strings": [
"search for this",
"and for this",
"and search for this string too"
]
}
Run Code Online (Sandbox Code Playgroud)
更新:
目的:我正在创建一个API,我的用户可以web-hooks在同一个端点上"批处理"请求(获取响应),或者一次性请求(立即获得响应).这个问题只是我要求的一小部分.
下一篇文章将使用相同的逻辑,我将允许搜索在多个页面上进行,即:
[
{
"page": "/section/look-at-this-page",
"strings": "search for this"
},
{
"page": "/this-page",
"strings": [
"search for this",
"and for this", …Run Code Online (Sandbox Code Playgroud) 我有一个列amount_splits,我需要按照我指定的键顺序将我的 JSON 保存到其中。
将jsonbJSON 键保存到数据库时,如何防止 Rails / Postgres自动对其进行排序?(用于创建或更新)
看起来它试图按字母顺序排序,但做得很差。
{
"str_fee": 3.17, # key 1
"eva_fee": 14.37, # key 2
"fran_royalty": 14.37, # key 3
"fran_amount": 67.09 # key 4
}
Run Code Online (Sandbox Code Playgroud)
{
"eva_fee": 14.37, # key 2
"str_fee": 3.17, # key 1
"fran_amount": 67.09, # key 4
"fran_royalty": 14.37 # key 3
}
Run Code Online (Sandbox Code Playgroud)
在您回答“在接收端消耗 JSON 时排序无关紧要”之前,请先停下来想一想……然后请继续阅读
我需要按照我需要的方式对键进行排序,因为使用此 JSON 的客户端界面正在向开发人员显示 JSON,这些开发人员需要按照文档告诉他们的顺序来显示 JSON。以及它需要的原因按照这个顺序是首先显示什么计算发生的过程:
正确的顺序告诉开发者:
首先str_fee应用 ,然后应用eva_fee,然后是fran_royalty... …
根据我的理解,验证JWT签名是一个直接的过程.但是,当我使用一些在线工具为我做这件事时,它并不匹配.如何在JWT不使用JWT库的情况下手动验证签名?我需要一种快速方法(使用可用的在线工具)来演示如何完成此操作.
我JWT在https://jwt.io/#debugger-io上创建了我的以下信息:
HS256hONPMX3tHWIp9jwLDtoCUwFAtH0RwSK6
{
"alg": "HS256",
"typ": "JWT"
}
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
智威汤逊:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.wDQ2mU5n89f2HsHm1dluHGNebbXeNr748yJ9kUNDNCA
手动JWT签名验证尝试:
使用base64UrlEncode计算器(http://www.simplycalc.com/base64url-encode.php或https://www.base64encode.org/)
如果我:( 不是站点上的实际值,修改后显示最终为我构建的工具)
base64UrlEncode("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9") + "." + base64UrlEncode("eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ")
我明白了:
ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5.ZXlKemRXSWlPaUl4TWpNME5UWTNPRGt3SWl3aWJtRnRaU0k2SWtwdmFHNGdSRzlsSWl3aWFXRjBJam94TlRFMk1qTTVNREl5ZlE=
注意:如果我应该对已经编码的值进行编码,或者按原样使用已经编码的值,那么我会有一些困惑.
(即使用
base64UrlEncode("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9") + "." + base64UrlEncode("eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ")vs"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ").无论我应该做什么,最终结果仍然与签名不符.我倾向于认为我应该不重新编码的编码值,不管是真还是假.
然后使用HMAC Generator计算器(https://codebeautify.org/hmac-generator或https://www.freeformatter.com/hmac-generator.html#ad-output)
(不是网站上的实际价值,经过修改以显示最终为我构建的工具)
HMACSHA256( …
我在设置从 AWS Elastic Beanstalk 项目到 CloudWatch 的自定义日志文件流时遇到问题。作为参考,我尝试了“AWS Elastic Beanstalk:将自定义日志添加到 CloudWatch?”中的建议。无济于事。本质上,当我从主机下载日志时,我想要的日志文件位于/var/log/containers/api-1c080332ba3f-stdouterr.log、/var/log/containers/nginx-a5057f87f4cf-stdouterr.log和/var/log/containers/web-0a2e0762e8f0-stdouterr.log (其中数字在每次更新时都会更改)。
我添加了一个新的自定义日志配置文件.ebextensions/log.config(以下供参考):
packages:
yum:
awslogs: []
files:
"/etc/awslogs/awscli.conf" :
mode: "000600"
owner: root
group: root
content: |
[plugins]
cwlogs = cwlogs
[default]
region = `{"Ref":"AWS::Region"}`
"/etc/awslogs/awslogs.conf" :
mode: "000600"
owner: root
group: root
content: |
[general]
state_file = /var/lib/awslogs/agent-state
"/etc/awslogs/config/logs.conf" :
mode: "000600"
owner: root
group: root
content: |
[/var/log/containers/nginx-stdouterr.log]
log_group_name = `{"Fn::Join":["/", ["/aws/elasticbeanstalk", { "Ref":"AWSEBEnvironmentName" }, "var/log/containers/nginx-stdouterr.log"]]}` …Run Code Online (Sandbox Code Playgroud) amazon-web-services amazon-cloudwatch amazon-elastic-beanstalk amazon-cloudwatchlogs
该项目当前正在此命令在后台运行:
docker-compose up -d
Run Code Online (Sandbox Code Playgroud)
我需要对它们进行两项更改docker-compose.yml:
- 添加一个新的容器
- 更新以前的容器以具有指向新容器的链接
进行更改后:
注意<--我的更改的“ ”箭头
web:
build: .
restart: always
command: ['tini', '--', 'rails', 's']
environment:
RAILS_ENV: production
HOST: example.com
EMAIL: admin@example.com
links:
- db:mongo
- exim4:exim4.docker # <-- Add link
ports:
- 3000:3000
volumes:
- .:/usr/src/app
db:
image: mongo
restart: always
exim4: # <-------------------------------- Add new container
image: exim4
restart: always
ports:
- 25:25
environment:
EMAIL_USER: user@example.com
EMAIL_PASSWORD: abcdabcdabcdabcd
Run Code Online (Sandbox Code Playgroud)
进行更改后,如何应用它们?(不破坏任何东西)
我试过了,docker-compose down && docker-compose up -d但这破坏了Mongo DB容器...我再也不能这样做了...:sob: …
我一直在到处寻找,但找不到解决方案。
我只是想做到以下几点:
import ComponentOne from '../components/component-one'
import ComponentTwo from '../components/component-two'
class Home extends Component {
constructor( props ) {
// So I can dynamically call a Component, found no other way
this.components = {
ComponentOne: <ComponentOne />,
ComponentTwo: <ComponentTwo />
}
}
[...code removed for brevity...]
_appendStep( step ) {
var component = React.cloneElement(this.components[step])
this.steps.appendChild( component )
}
}
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎很简单。我有
<div className="recipe-steps" ref={(ref) => this.steps = ref}></div>
Run Code Online (Sandbox Code Playgroud)
我也需要动态appendChild组件。问题是,我附加到此的“步骤”<div>绝对需要是我创建的组件之一,需要允许我添加多个组件子级,甚至复制(这就是我使用的原因React.cloneElement())组件。
一旦我附加了所有“步骤”,稍后的过程将解析每个步骤以确定如何运行配方。
以下工作正常,但我不需要创建一个简单的 DOM 节点,我需要使用我已经构建并附加的组件
var basicElement …Run Code Online (Sandbox Code Playgroud) 当一个新用户注册,我们打算给他们一个复选框,在那里他们可以OPT- IN或OPT- OUT接收短信的.
我可以通过确保我们的应用程序不按照自己的方式发送文本来轻松跟踪这个问题,但是我想知道在Twilio中选择添加它们是否更有意义?
我仍在玩这个想法,但不管我没有看到用于选择加入或选择退出的任何API端点(https://www.twilio.com/docs/api).
问题:
docker ×1
dom ×1
javascript ×1
json ×1
jsonb ×1
jwt ×1
postgresql ×1
react-dom ×1
reactjs ×1
sms ×1
twilio ×1
twilio-api ×1