Ruby on rails Rails中的命名空间表单对象
在我正在构建的新Rails 6项目中,我很难设置一些自定义表单对象。我怀疑这可能是由于名称空间问题,但我还不能确定 app/views/saasy/signups/new.html.erbRuby on rails Rails中的命名空间表单对象,ruby-on-rails,ruby,Ruby On Rails,Ruby,在我正在构建的新Rails 6项目中,我很难设置一些自定义表单对象。我怀疑这可能是由于名称空间问题,但我还不能确定 app/views/saasy/signups/new.html.erb 机构名称: app/controllers/saasy/signups\u controller.rb class Saasy::SignupController“BhhvRaYKf220afExocQ//LIY1jszVsXs+LTHFUEFKVR6CIVBSA+22MSXWO3YT6MK2UOSKX9
机构名称:
app/controllers/saasy/signups\u controller.rb
class Saasy::SignupController
config/routes.rb
Rails.application.routes.draw do
名称空间:saasydo
资源:注册,仅:[:新建,:创建]
结束
结束
app/forms/saasy/signup\u form.rb
模块Saasy
班级登记表
包括ActiveModel::Model
属性访问器:用户,:帐户
委托:attributes=,to::user,前缀:true
委托:属性=,收件人::帐户,前缀:true
def初始化(参数={})
超级(参数)
@user=Saasy::user.new(参数)
@account=Saasy::account.new(参数)
结束
def寄存器
#最终在这里做实际的注册工作
结束
结束
结束
但是,每当我测试它时,我都会返回以下消息:param丢失或值为空:signup\u form
params散列如下所示:
{
“真实性令牌”=>“BhhvRaYKf220afExocQ//LIY1jszVsXs+LTHFUEFKVR6CIVBSA+22MSXWO3YT6MK2UOSKX9GL6WIAGMMVSG==”,
“帐户”=>{“组织”=>“示例名称”},
“提交”=>“创建注册表单”
}
我已经尝试了很多常见的混乱解决方案,比如在视图中使用
表单,更改路线名称等等,但到目前为止我还没有任何运气。任何建议都将不胜感激 这与名称空间无关。您只是需要错误的参数密钥
def signup_form_params
params
.require(:signup_form)
.permit(account_attributes: [:organization])
end
Rails通过调用传递的模型上的model\u name.param\u key
来获取输入的“key”。param键不考虑类的模块嵌套。也不应该这样,因为这是一个实现细节,不一定是应用程序通过HTTP公开的“公共api”的一部分。您的代码组织和应用程序的routes/http参数是两件截然不同的事情
您可以通过提供作用域:
选项来覆盖该键,以使用
创建表单
<%= form_with(model: [ :saasy, @signup ], scope: :saasy_signup_form, local: true) do |signup_form| %>
<%= fields_for :account, @signup.account do |account_fields| %>
Organization name: <%= account_fields.text_field :organization %>
<% end %>
<%= signup_form.submit %>
<% end %>
机构名称:
但我觉得这很愚蠢。这与名称空间无关。您只是需要错误的参数密钥
def signup_form_params
params
.require(:signup_form)
.permit(account_attributes: [:organization])
end
Rails通过调用传递的模型上的model\u name.param\u key
来获取输入的“key”。param键不考虑类的模块嵌套。也不应该这样,因为这是一个实现细节,不一定是应用程序通过HTTP公开的“公共api”的一部分。您的代码组织和应用程序的routes/http参数是两件截然不同的事情
您可以通过提供作用域:
选项来覆盖该键,以使用
创建表单
<%= form_with(model: [ :saasy, @signup ], scope: :saasy_signup_form, local: true) do |signup_form| %>
<%= fields_for :account, @signup.account do |account_fields| %>
Organization name: <%= account_fields.text_field :organization %>
<% end %>
<%= signup_form.submit %>
<% end %>
机构名称:
但我觉得这很傻