2013-04-24 24 views
6

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.

Odpowiedz

2

spróbować

form_for(url: { controller: "posts", action: "create" }, html => { :class => "form" }, method: "post") do |f| 
Powiązane problemy