3

在 Rails 4 中,通常我只会在通过使用以下代码声明私有函数来提交表单时允许某些参数:

params.require(:object).permit(:name, :email, :phone)

但是,我使用的是 form_tag 而不是 form_for,因此每个字段都在 params 哈希中提交。由于我不是 ruby​​/rails 专家,以有效方式允许这些参数的最佳方法是什么?

这是正确的吗?

params.require(:params).permit(:name, :email, :phone)
4

2 回答 2

4

我认为这是正确的解决方案:

params.permit(:name, :email, :phone)
于 2013-09-10T21:01:58.813 回答
1

您可以params.permit像 Lichtamberg 建议的那样更改该行,但是根据您的实现,您可能会破坏其他其他路由(尤其是 RESTful 路由)。如果这是唯一一个这样的页面(使用),您可以做的一件事是通过传入变量的名称form_tag来更改表单输入以匹配常规表单的结构,如下所示:form_for

<%= label_tag :object, :name %>
<%= text_field_tag :object, :name %>

这会产生一个参数映射,如下所示:

{
    :object => {
        :name => "tommyd456",
        :email => "bla@bla.com"
        ...etc ...etc

这对于原始params.require(:object)行完全有效。

查看Rails 文档中的此链接以获取更多信息。

于 2013-09-12T15:07:55.537 回答