Ruby on rails rails参数是什么?

Ruby on rails rails参数是什么?,ruby-on-rails,activerecord,model-view-controller,rails-activerecord,strong-parameters,Ruby On Rails,Activerecord,Model View Controller,Rails Activerecord,Strong Parameters,到目前为止,我已经建立了几个rails站点(使用的框架非常有趣),但我逐渐注意到,我的monkey-see-monkey-do学习强参数的方法显然在我的理解上留下了一两个空白 下面看一个简单的示例(示例) 我真的不知道他为什么能够引用:recipe作为参数。我对参数的松散理解是,它们本质上是表中的列,但是上面的示例暗示它们也可以是表本身的名称。(虽然其中一个表名为“recipes”,但没有列名为“recipe”) 那么,当我生成一个模型神话(单数CamelCase)并因此生成一个相应的表我的东西

到目前为止,我已经建立了几个rails站点(使用的框架非常有趣),但我逐渐注意到,我的monkey-see-monkey-do学习强参数的方法显然在我的理解上留下了一两个空白

下面看一个简单的示例(示例)

我真的不知道他为什么能够引用
:recipe
作为参数。我对参数的松散理解是,它们本质上是表中的列,但是上面的示例暗示它们也可以是表本身的名称。(虽然其中一个表名为“recipes”,但没有列名为“recipe”)

那么,当我生成一个模型<代码>神话(单数CamelCase)并因此生成一个相应的表<代码>我的东西(复数snake\u case)时,我会自动拥有一个相应的参数<代码>:我的东西(带冒号的单数snake\u case)供我使用吗

我的问题如下:

  • 上述理解是否准确
  • 除了表名和列名之外,还有其他参数对应吗?如果是,它们是什么
  • 有没有办法列出我可以使用的参数(类似于
    rake routes

  • 非常感谢您事先提供的任何澄清

    控制器中可用的
    参数
    仅是浏览器表单中字段名称的结果。表单中字段的名称遵循Rails使用视图中使用的表单帮助器函数创建的约定

    当您在视图中看到此项时:

    = form_for @recipe do |f|
      = f.text_field :title
    
    然后将生成以下HTML:

    <form stuff-here>
      <input name="recipe[title]" other-stuff>
    
    
    
    HTML中的
    name
    属性将导致该字段的值在控制器中显示为
    params[:recipe][:title]
    ,这就是params的来源,如果您更改了其中的任何部分,那么
    params
    的名称将不同

    因此,对于您的问题:

  • 在某种程度上,你得出了正确的结论,但可能不知道为什么:)
  • 根据所使用的表单帮助程序和使用方式,您可以拥有任何您喜欢的
    params
    。一切都可以被推翻
  • 您始终可以执行以下操作:
    logger.debug params.inspect
    在控制器中,这将允许您查看(在
    log/development.log
    文件中)哪些
    params
    可供您使用

  • params
    散列基本上是由浏览器(或API客户端)发送的数据。它们没有在任何地方定义,因为浏览器可以向您发送它想要的任何内容(尝试将&foo=bar添加到应用程序中URL的末尾,并查看这如何将条目添加到参数中),尽管通常您的应用程序可能希望数据具有特定的形状


    他们自己的参数意义不大;重要的是如何使用它们。如果要将它们传递给
    SomeModel.create
    ,则键应该是模型中属性的名称(并且应该使用强参数来控制可以设置哪些属性)。这只是它们的一个用途(尽管很常见):例如,它们可能包含搜索条件

    参数就是:参数。这是一个杂烩。对于配方,它们位于哈希键
    :recipe
    下。它不是表或列的名称,它只是一个散列键。其他人也是。如果您希望能够传入一个参数,那么它必须是被允许的——它们可以被任意命名,例如,您可以传入一个不属于任何表的隐藏字段。
    <form stuff-here>
      <input name="recipe[title]" other-stuff>