Ruby on rails 未经允许的参数:联系\u请求

Ruby on rails 未经允许的参数:联系\u请求,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我试着跟随,因为它非常接近我正在尝试创造的东西。我目前正在使用Rails 4.2测试版。我对rails真的是个新手,所以我不确定我会错在哪里 控制器: class UsersController < ApplicationController def new @user = User.new @user.contact_requests.build end def create @user = User.new(user_params) end

我试着跟随,因为它非常接近我正在尝试创造的东西。我目前正在使用Rails 4.2测试版。我对rails真的是个新手,所以我不确定我会错在哪里

控制器:

class UsersController < ApplicationController

  def new
    @user = User.new
    @user.contact_requests.build
  end

  def create
    @user = User.new(user_params)
  end

  private

    def user_params
      # strong_parameters, which requires us to tell Rails exactly which parameters
      # we want to accept in our controllers
      params.require(:user).permit(:first_name, :last_name, :email, :phone_number, contact_requests_attributes: [:message])
      # params.require(:users).permit!
    end
end
路线:

Rails.application.routes.draw do
  root 'home#index'
  match '/send_mail', to: "home#send_mail", via: "get"



  get 'test', to: "users#new"
  post 'test', to: "users#create"

不要忘记
contact\u requests
id
属性,您需要修改
user\u params
方法,请参见下文

params.require(:user).permit(:first_name, :last_name, :email, :phone_number, contact_requests_attributes: [:id, :message])
我已将
id
属性添加到
contact\u requests\u属性中

另外,您需要使用
:user
而不是
:users
,我已经在上面更正了


试试看

不要忘记
联系人请求的
id
属性,您需要修改
用户参数
方法,请参见下文

params.require(:user).permit(:first_name, :last_name, :email, :phone_number, contact_requests_attributes: [:id, :message])
我已将
id
属性添加到
contact\u requests\u属性中

另外,您需要使用
:user
而不是
:users
,我已经在上面更正了


试试看

您需要更改允许的参数

params.require(:user).permit(:first_name, :last_name, :email, :phone_number, contact_requests: {:id, :message})

您需要更改允许的参数

params.require(:user).permit(:first_name, :last_name, :email, :phone_number, contact_requests: {:id, :message})

嘿,您应该解决的第一件事是在require中使用单数,如:
params.require(:user)
。如果您查看表单字段名称以及控制器作为参数接收的内容,您就会理解其中的原因。修改此内容并重试。Dude别管表单,将其作为(@user…
)的
表单,您为用户实例创建了一个表单,该表单保存在@user中。@Octopus Paul感谢您的帮助和解释!我真的很感激!嘿,您应该修复的第一件事是在require中使用单数,如:
params.require(:user)
。如果查看表单字段名称以及控制器作为参数接收到的内容,您将了解原因。请修改此字段,然后重试。请别管表单,将其作为
表单\u保存(@user…
,您为用户实例创建了一个表单,该表单保存在@user中。@Octopus Paul感谢您的帮助和解释!我非常感谢!使用
:user
,而不是
:users
,检查我编辑的答案我做了您建议的更改,但我现在有一个路由问题,我添加了
:url=>“/test”
到我的表单中,但我现在收到另一个错误使用
:user
而不是
:users
,检查我编辑的回答我做了您建议的更改,但我现在有一个路由问题我在我的表单中添加了
:url=>“/test”
,但我现在收到另一个错误
params.require(:user).permit(:first_name, :last_name, :email, :phone_number, contact_requests: {:id, :message})