フォーラム、ドキュメント、およびブログの提案を試しました。彼らは私のために適切に保存しておらず、所望のコントローラを通って経路指定しないという構文に集中する。Rails form_forをカスタムコントローラにルーティングする構文
大きな画像、私は機能を共有する2つのソフトウェアアプリケーションがあります。共有機能を実装するために、私はRailsにShared :: Widgetsを生成させた。このMVCはうまく動作します。標準共有/ウィジェット&などのルーティングを使用して、表示、更新、作成、または削除することは問題ありません。
次に、製品固有の機能のために、Product1 :: WidgetsとProduct2 :: Widgetsという2つのコントローラを作成しました。どちらもShared :: Widgetsコントローラを継承しています。製品固有のレイアウトを除いて、両方とも空です。
この方式はほぼ有効です。 product1/widgetsにルーティングするとき、レイアウトをproduct1に設定し、共有/ウィジェットのindexメソッドを呼び出します。その結果、product1レイアウトのshared/widgets/index.html.erbが表示されます。同様に、product2/widgetsにルーティングするとき、product2のレイアウトを設定し、共有/ウィジェットのindexメソッドを呼び出します。その結果、product2レイアウトのshared/widgets/index.html.erbが表示されます。完璧。
しかし今、私たちはform_forに行きます。レールマジックを実装しているので、実際にはShared :: Widgetsコントローラに直接ルーティングしたいと思っています。しかし、それは私が望むものではありません。レイアウトを設定するために適切な製品コントローラにルーティングする必要があります。
form_for(@shared_widget, :html => { :class => "form"}) do |f|
は、私が試した:レールはのform_forはこのようなものだった生成
form_for([:product1, @widget], :html => { :class => "form"}) do |f|
それは名前空間(product1_widget_shared_widget_path)を複製します。
は私が正しくルーティングするように見えるすべてが、次の3つのフォーマットを、試みたが、レコードを保存、しかし、レコードが空である(カラムは空白です):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|
任意のヘルプ?上記のコードにスペルミスがある場合、それは転写によるものです。使用した実際のコードは通訳者に渡されました。ありがとうございました。