この問題に遭遇したのはこれが初めてです。
2 つのテーブルを更新するコントローラーにポスト リクエストを送信するビューがあります。
def update
if request.post?
if @circuit
# update
@circuit.update_attributes params[:circuit]
@logical_interface = LogicalInterface.new params[:logical_interface]
@logical_interface.save
#redirect_to :action => 'update', :id => @circuit.id
@success = "Updated." if @circuit.valid?
else
# attempt create
end
end
end
これらの 3 行は、コントローラーに追加したものです。
@logical_interface = LogicalInterface.new params[:logical_interface]
@logical_interface.save
redirect_to :action => 'update', :id => @circuit.id # this was added because the view wasn't being updated until refreshed
リダイレクトを保持すると、それに応じてビューが更新されますが、変数Updated.
にメッセージが表示されません。@success
リダイレクトをコメントアウトすると、circuit
フォームの上部にあるフォーム フィールドは更新されますが、logical_interfaces
追加しようとしているテーブルは更新されませんが、Updated.
成功メッセージが表示されます。すべてが直接ビューにあり、パーシャルは使用されません。
うまく説明できれば幸いですが、不明な点がある場合は、質問を更新して詳細を確認できます。
フォームは次のとおりです。
<%= form_tag :controller => "circuit", :action => "update" %>
...
</form>
フォームでは、2 つのオブジェクトを使用circuit
しlogical_interface
て入力を分割し、コントローラで を更新しcircuit
て新しい を作成できるようにしますlogical_interface
。