Я действительно застрял. Есть ли кто-нибудь, кто мог бы помочь? Что я делаю не так? Как создать простую вложенную форму?Как создать простую вложенную регистрационную форму?
У меня есть две модели каждый со своими ресурсами: организации и участники. Организация имеет несколько членов, и член является членом одной организации.
Как создать простую вложенную форму, которая подписывает новую организацию, а также один член для этой организации?
Моя текущая попытка ниже. Новое представление загружается штрафом, но затем при отправке формы я получаю сообщение об ошибке unknown attribute 'org_name' for Member
.
Хотя один из способов пойти может быть объектом формы и Activemodel, я бы прежде, чем реализовать такой первый, как он, работать без такового.
Организация модель: модель
has_many :members, dependent: :destroy
accepts_nested_attributes_for :members, :reject_if => :all_blank, :allow_destroy => true
Участник:
belongs_to :organization
организации управления:
def new
@organization = Organization.new
@member = @organization.members.build
end
def create
@organization = Organization.new(organizationnew_params)
@member = @organization.members.build(organizationnew_params)
if @organization.save && @member.save
@member.send_activation_email # Will Rails be able to get to this method? The method exists in multiple models and Rails should here use the version from the Member model.
flash[:success] = "Please check your email to activate your account."
redirect_to root_url
else
render 'new'
end
end
def organizationnew_params
params.require(:organization).permit(:org_name,
:phone,
member_attributes: [:email,
:username,
:admin,
:password,
:password_confirmation
])
end
организации новый вид:
<%= form_for(@organization) do |f| %>
<%= f.text_field :org_name, %>
<%= f.text_field :phone %>
<%= f.fields_for :member do |p| %>
<%= p.text_field :username %>
<%= p.email_field :email %>
<%= p.password_field :password %>
<%= p.password_field :password_confirmation %>
<%= hidden_field_tag :admin, true %>
<% end %>
<%= f.submit "Sign up", class: "formbutton btn btn-default" %>
<% end %>
Спасибо, я пытался выполнить ваши шаги, не рефакторинг в отдельный объект формы. Я добавил это как обновление к моему оригинальному сообщению. Если я не ошибаюсь, то использование сильных_парамов аналогично используемому attr_accessor (я не использовал attr_accessor еще нигде в своем приложении, поэтому для согласованности вместо этого используйте сильные_параметры). Фактически, если я добавляю 'attr_accessible: members_attributes' к модели организации, он выдает ошибку' undefined method 'attr_accessible' '. – Nick
Я не буду работать, как вы писали. У вас есть has_many связь, поэтому вы не можете использовать методы для одного ресурса. –
Я изменил это на '@member = @ organization.members.build' – Nick