2013-04-24 13 views
6

フォーラム、ドキュメント、およびブログの提案を試しました。彼らは私のために適切に保存しておらず、所望のコントローラを通って経路指定しないという構文に集中する。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| 

任意のヘルプ?上記のコードにスペルミスがある場合、それは転写によるものです。使用した実際のコードは通訳者に渡されました。ありがとうございました。

答えて

2

この

form_for(url: { controller: "posts", action: "create" }, html => { :class => "form" }, method: "post") do |f| 
を試してみてください
関連する問題