Ruby on Rails Saving in two tables from one form
model, ruby-on-rails, save
Solution
You are using `wrong method` for appending your child with the parent.And also it is `has_one relation`,so you should use `build_model` not `model.build`.Your `new` and `create` methods should be like this
class HotelsController < ApplicationController
def new
@hotel = Hotel.new
@hotel.build_address #here
end
def create
@hotel = current_user.hotels.build(hotel_params)
if @hotel.save
flash[:success] = "Hotel created!"
redirect_to @hotel
else
render 'new'
end
end
Update
Your `hotel_params` method should look like this
def hotel_params
params.require(:hotel).permit(:title, :stars, :room, :price,address_attributes: [:country,:state,:city,:street])
end
Problem
I have two models Hotel and Address. Relationships are: ``` class Hotel belongs_to :user has_one :address accepts_nested_attributes_for :address ``` and ``` class Address belongs_to :hotel ``` And I need to save in hotels table and in addresses table from one form. The input form is simple: ``` <%= form_for(@hotel) do |f| %> <%= f.text_field :title %> ......other hotel fields...... <%= f.fields_for :address do |o| %> <%= o.text_field :country %> ......other address fields...... <% end %> <% end %> ``` Hotels controller: ``` class HotelsController < ApplicationController def new @hotel = Hotel.new end def create @hotel = current_user.hotels.build(hotel_params) address = @hotel.address.build if @hotel.save flash[:success] = "Hotel created!" redirect_to @hotel else render 'new' end end ``` But this code doesn't work. ADD 1 Hotel_params: ``` private def hotel_params params.require(:hotel).permit(:title, :stars, :room, :price) end ``` ADD 2 The main problem is I don't know how to render form properly. This ^^^ form doesn't even include adress fields (country, city etc.). But if in the line ``` <%= f.fields_for :address do |o| %> ``` I change :address to :hotel, I get address fields in the form, but of course nothing saves in :address table in this case. I don't understand the principle of saving in 2 tables from 1 form, I'm VERY sorry, I'm new to Rails...