You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何允许model[name[var]]格式参数?Rails参数配置方案

搞定Rails动态model[name[var]]参数的Strong Parameters配置

刚好处理过类似的动态嵌套参数场景,我来给你说怎么配置强参数:

你的表单生成的category[name[en]]这种字段,提交后会在params[:category]里生成一个嵌套哈希name: { "en" => "xxx", "..." => "..." }。要让Strong Parameters允许这种动态键的哈希,只需要在参数许可方法里明确指定:name为一个可包含任意键的哈希就行。

假设你的控制器里的参数方法是category_params(你提到的location_params应该是笔误,对应Category模型),修改成下面这样:

def category_params
  params.require(:category).permit(:slug, name: {})
end

原理说明

  • name: {} 是告诉Rails:我允许:name这个参数是个哈希,而且哈希里不管键是什么(比如en、fr这些动态语言码),对应的键值对都能通过强参数校验。
  • 如果想限制只能用指定的几种语言(比如只允许en、fr、es),也可以把允许的键列出来,这样更安全:
    # 仅许可en、fr、es三种语言的名称参数
    params.require(:category).permit(:slug, name: [:en, :fr, :es])
    

提交后的参数结构参考

表单提交后,你的参数结构大概是这样的,上面的配置会完美适配:

{
  category: {
    slug: "tech-news",
    name: {
      en: "Tech News",
      fr: "Actualités Tech"
    }
  }
}

内容的提问来源于stack exchange,提问作者Nino Treyssat-Vincent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:52:22