Кажется, что вы хотите, чтобы объекты Contact и Message создавались из одной формы и связывали их.Как я уже говорил вам в предыдущем вопросе.form_for может принимать как отдельные значения, так и значения других объектов.
_form.html.erb
<% form_for :message do |f| %>
<%= f.test_field :some_field %>
..
..
<%= text_field :contact, :first_name %>
<%= text_field :contact, :last_name %>
<%= f.submit %>
<% end %>
messages_controller.rb
def new
@message = Message.new
@contact = Contact.new
end
def create
@message = Message.new(params[:message])
@contact = Contact.new(params[:contact])
@contact.message = @message
if @contact.save # saves both contact and message if has_one relation is given in models
..
else
...
end
end
Но, как говорится,лучше использовать модель Nested form.Для этого вам нужно написать код с центром в contact
.
contacts_controller.rb
def new
@contact = Contact.new
@contact.message.build
end
def create
@contact = Contact.new(params[:contact])
if @contact.save
..
else
..
end
end
_form.html
<% form_for :contact do |f| %>
<% f.fields_for :message do |p| %>
<%= p.text_field :some_field %>
...
<% end %>
<%= f.text_field :first_name %>
<%= f.text_field :second_name %>
<%= f.submit %>
<% end %>
Для этого вам потребуетсянужно указать accepts_nested_attributes_for :message
в Contact.rb