ruby-on-rails - 如何将值分配给从参数到 ActionController::Parameters 对象的键
问题描述
如何将值从参数分配给ActionController::Parameters
对象?
我尝试了什么:
(byebug) foo_inquiry_params
<ActionController::Parameters {"email"=>"fds@fsdgf.com", "subject"=>"fds", "description"=>"fds"} permitted: true>
(byebug) name_inquiry_params["user_id"] = 5
5
(byebug) foo_inquiry_params
<ActionController::Parameters {"email"=>"fds@fsdgf.com", "subject"=>"fds", "description"=>"fds"} permitted: true>
(byebug)
解决方案
ActionController::Parameters
不能像普通哈希一样对待,所以如果你想调用.merge
它,你必须先将你的参数转换为哈希:
ActionController::Parameters.new({foo: 'bar'}).to_h.merge({bar: 'baz'})
当我不得不做这种事情时,我发现自己使用的工作流程是:
def update
attrs_to_update = thing_params.to_h.merge(one_more_attribute: 'some value')
@thing.update(attrs_to_update)
end
def thing_params
params.require(:thing).permit(:some_attribute, :another_attribute)
end
推荐阅读
- java - ElasticSearch SearchRequest 不返回必须匹配文档中的第一个元素
- python - 如何在图形栏中以零值绘制一条线?
- arrays - Nuxt+VueX 在子组件中存储绑定(通过迭代数组)
- excel - 将数据库导出到 XLS:它会忽略格式化?
- discord - 仅在所选频道中的特定命令
- vue.js - 使用 nuxt/content 显示从数据库中获取的 markdown
- javascript - 如果我尝试添加它们,则找到数组的 2 个值,结果是指定数字
- reactjs - react firebase auth-实时获取自定义声明在useEffect中不起作用-无法读取属性getIDtokenresult
- javascript - Redux:动作触发了两次
- python-3.x - 如何在 Python 中将图像列表显示为动画电影播放器?