has_many i belongs_to - jak to się robi?

Mam dwa modele w relacji has_many i belongs_to, powiedzmy, że: Country has_many :cities i City belongs_to :country.

W widoku country#show chce dodac link “Add new city”, który bedzie dodawal City dla tego Country.

Standardowo robie to tak, ze daje link z parametrem ‘country_id’ czyli ‘new_city_path(country_id: country.id)’, potem w city#new zapisuje: @city = City.new i @country=Country.find(params[:country_id]) i robie formularz dla City z dodanym ukrytym polem :country_id i to potem leci do city#create. Pomyślałem, że zamiast kombinować z ukrytym polem, równie dobrze mogę ten country_id zapisać w sesji w city#new i w city#create skorzystać z tego i wyczyścić.

Które rozwiązanie jest lepsze? A może w ogóle robię to jakoś na około :slight_smile:

Poczytaj o nested resources.

resources :countries do resources :cities end
Zrobisz sobie potem formularz

  form_for [@country, @city] do |f|

A w kontrolerze w akcji new

@country = Country.find(params[:country_id] @city = @country.cities.build
i w akcji create

@country = Country.find(params[:country_id] @city = @country.cities.build params[:city] .....

Albo accepts_nested_attributes_for :slight_smile: