Zagnieżdżony routing

Cześć ,

Mam tabele Publisher ->Site->Placement i zagnieżdżony routing.

resources :publishers  do
resources :sites do
	resources :placements
  end
end

W Widoku sites/show mam button do stworzenia nowego placementu w danej stronie

<%= link_to("New Placement",new_publisher_site_placement_path[@publisher,@site], class: "btn btn-default navbar-btn")%><br>

i własnie tutaj mam problem http://localhost:3000/publishers/6/sites/60
Czyli mam ID Publishera oraz ID Sites
dostaje błąd.
No route matches {:action=>“new”, :controller=>“placements”, :id=>“60”, :publisher_id=>“6”} missing required keys: [:site_id]

Błąd jest przy buttonie New Placement

Pomoże ktoś ?

a nie powinno być:

new_publisher_site_placement_path([@publisher,@site])

?

@essepl lepszym rozwiązaniem byłoby podanie jak do tego dojść, poza tym nawiasy kwadratowe w helperach routingu ?

@zaper sprawdź polecenie rake routes w konsoli i to ci wypisze wszystkie dostępne routingi

tutaj to mi wygląda na zwykłą literówkę (zapomniane nawiasy :wink: )

wydaje mi się, że stosuje się nawiasy kwadratowe, tak samo jak przy form_for na przykład.

@wafcio - Do stworzenie nowego Placementu mam poprawny helper.

new_publisher_site_placement
GET /publishers/:publisher_id/sites/:site_id/placements/new(.:format) placements#new

Relacje mam poprawnie ustawione dla placementu i site w modelu.

w form_for możesz stosować helpery routingu lub tworzyć url z nawiasów np.:

form_for object, url: blog_posts(blog) - odnosi się tylko dla akcji create, natomiast
form_for object, url: [blog, post] - w przypadku gdy post nie jest persistant to stworzy path dla akcji create a jesli jest persistant to stworzy path dla update (ta forma jest w pewnych przypadkach bardziej uniwersalna, od taka różnica

@zaper usuń nawiasy kwadratowe i powinno być ok, bo on traktuje nawias kwadratowy jako jeden, pierwszy, parametr i dlatego pokazuje ci, że drugi jest pusty (swoją drogą skąd wziąłeś wersję z nawiasami kwadratowymi) ?

Jakich klamrowych ? Chyba kwadratowych, jak to teraz wygląda.

Tak tak , po usunięciu kwadratowych nawiasów.

<%= link_to(“New Placement”,new_publisher_site_placement_path(@publisher,@site), class: “btn btn-default navbar-btn”)%>

i dalej bląd

@published i @site nie są przypadkiem nilami ?

Wygląda na to , że tak.
Jak mogę to obsłużyć?

przejrzyj pierwszy lepszy tutorial do railsów, tam będziesz miał podane jak ustawia się zmiennej instancji (te z @).

PS. ustawia się je w kontrolerze