【发布时间】:2019-05-11 02:48:14
【问题描述】:
我实际上是在向我的 Rails API 发布一个 id 数组,但该数组是作为散列接收的,其中键是数组的索引。
我已经尝试允许参数 params.permit(permission_ids: []) 并且什么都没有...
用户迁移
class CreateUsers < ActiveRecord::Migration[5.1]
def change
create_table :users do |t|
t.string :username, null: false
t.string :email, null: true
t.integer :language_id, null: false
t.integer :permission_ids, array: true, default: []
t.string :password_digest, null: false
t.timestamps
end
add_index :users, :username, unique: true
end
end
控制器中的用户参数方法。
def user_params
params.require(:user).permit(:username,
:email,
:language_id,
:password,
:password_confirmation,
permission_ids: [])
end
如何接收参数
Parameters: {"user"=>{"username"=>"someusername", "email"=>"someemail@question.com", "language_id"=>"2", "permission_ids"=>{"0"=>"1", "1"=>"2", "2"=>"3", "3"=>"4", "4"=>"5", "5"=>"6", "6"=>"7", "7"=>"8", "8"=>"9", "9"=>"10", "10"=>"11", "11"=>"12"}}}
顺便说一句,我是使用 Axios 从 Vue 发帖的。
【问题讨论】:
-
我想知道真正的问题是否应该是:如何修复它发送数组的前端?哈希中的数据实际上是什么意思,有问题的 id 是键还是值?
-
前端正在发送一个数组,问题是 Rails 将其解析为哈希。 id 是哈希值。
-
能否请您显示此类请求的日志条目?
-
@spickermann 抱歉回复晚了,Axios 发送的请求是表单 url 编码的。由于 permission_ids 参数发送如下:
permissions_ids[0]: 1, permissions_ids[1]: 2, permissions_ids[2]: 3
标签: ruby-on-rails axios strong-parameters