Wypróbowane fora, dokumentacja i sugestie blogów. Zbiegają się one na składni, która dla mnie nie zapisuje poprawnie ORAZ prowadzi przez pożądany kontroler.Składnia do trasy Railsów form_for do kontrolera niestandardowego
Duże zdjęcie, mam dwie aplikacje o różnych funkcjach. Aby zaimplementować wspólną funkcjonalność, miałem Railsy generujące Shared :: Widgets. Ta MVC działa dobrze. Nie ma problemu z wyświetlaniem, aktualizowaniem, tworzeniem lub usuwaniem przy użyciu standardowego routingu udostępnionego/widżetów, np. &.
Następnie dla funkcji specyficznej dla produktu utworzyłem dwa kontrolery: Product1 :: Widgets i Product2 :: Widgets. Oba dziedziczą z kontrolera Shared :: Widgets. Oba są puste, z wyjątkiem układów specyficznych dla produktu.
Ten schemat prawie działa. Kiedy kieruję się do product1/widgets, ustawia układ na product1 i wywołuje metodę index shared/widgets. Wynikiem jest wyświetlenie pliku shared/widgets/index.html.erb z układem produktu 1. Podobnie, kiedy kieruję się do product2/widgetów, ustawia to layout produktu 2 i wywołuje metodę indeksowania współużytkowanych/widgetów. Wynikiem jest wyświetlenie pliku shared/widgets/index.html.erb z układem produktu2. Idealny.
Ale teraz dochodzimy do formy. Ponieważ implementuje magię szyn, naprawdę naprawdę chce kierować bezpośrednio do kontrolera Shared :: Widgets. Ale tego nie chcę. Chcę, aby trafił do odpowiedniego kontrolera produktu, aby ustawić układ. Szyny generowane form_for było coś takiego:
form_for(@shared_widget, :html => { :class => "form"}) do |f|
Próbowałem:
form_for([:product1, @widget], :html => { :class => "form"}) do |f|
ale powiela nazw (product1_widget_shared_widget_path).
Próbowałem następujących trzech formatów, z których wszystkie wydają się trasy poprawnie i zapisać rekord, ale płyta jest pusta (kolumny są puste):
form_for(@widget, url => "product1/widget", :html => { :class => "form"}) do |f|
form_for(@widget, url => url_for(:controller => "widget"), :html => { :class => "form"}) do |f|
form_for(@widget, url => url_for(:controller => "widget", :action => "create"), :html => { :class => "form"}) do |f|
Każda pomoc? Jeśli powyższy kod zawiera błędy ortograficzne, jest to spowodowane transkrypcją. Rzeczywisty kod, którego użyłem, przeszedł przez tłumacza. Dziękuję Ci.