Ruby on rails rails参数是什么?
到目前为止,我已经建立了几个rails站点(使用的框架非常有趣),但我逐渐注意到,我的monkey-see-monkey-do学习强参数的方法显然在我的理解上留下了一两个空白 下面看一个简单的示例(示例) 我真的不知道他为什么能够引用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)并因此生成一个相应的表我的东西
: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>