Я с трудом пытаюсь настроить некоторые настраиваемые объекты форм в новом проекте Rails 6, который я создаю. Я подозреваю, что это может быть связано с проблемами пространства имен, но я пока не могу сказать наверняка.
app / views / saasy / signups / new. html .erb
<%= form_with(model: [ :saasy, @signup ], url: saasy_signups_path(@signup), 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 %>
app / controllers / saasy / signups_controller.rb
class Saasy::SignupsController < ApplicationController
def new
@signup = Saasy::SignupForm.new
end
def create
@signup = Saasy::SignupForm.new(signup_form_params)
@signup.register
end
private
def signup_form_params
params
.require(:saasy_signup_form)
.permit(account_attributes: [:organization])
end
end
config / rout.rb
Rails.application.routes.draw do
namespace :saasy do
resources :signups, only: [:new, :create]
end
end
app / forms / saasy / signup_form.rb
module Saasy
class SignupForm
include ActiveModel::Model
attr_accessor :user, :account
delegate :attributes=, to: :user, prefix: true
delegate :attributes=, to: :account, prefix: true
def initialize(params= {})
super(params)
@user = Saasy::User.new(params)
@account = Saasy::Account.new(params)
end
def register
# eventually do actual signup stuff here
end
end
end
Однако всякий раз, когда я проверяю его, я получаю следующее сообщение: параметр отсутствует или значение пусто: signup_form
Параметры ha sh выглядят так:
{
"authenticity_token"=>"BhhvRaYKf220afExocQ//LIY1jszVsXs+lThFeUFKvr6ciVBsa+22mSxwO3yT6mK2uOsWSCKx9gL6WIaGmmvSg==",
"account"=>{"organization"=>"Example Name"},
"commit"=>"Create Signup form"
}
Я пробовал множество общих решений, таких как игра с form_with
в представлении и изменение названия маршрута и т. д. c, но пока мне не повезло. Любой совет будет очень признателен!