1

次のような form_for があります。

<%= form_for (@product||(Product.new([some params])), :remote => true, :as => :product_data, :url => {:controller => :products, action: :update}, :html => {:class => 'form-horizontal'} do |f| %>
...
<%= f.submit %>

私のコントローラーには、「更新」アクションがあります。

@product が既に存在する場合、フォームは正常に機能しています。コントローラーの「更新」アクションに送信します。@product が存在しない場合、新しい一時製品インスタンスが作成されますが、フォームを送信しても保存されません。その結果、ページの更新時に情報が失われます。

@product が存在する場合は「更新」し、同じフォームを使用して @product が存在しない場合はフォームで新規作成 + 更新するにはどうすればよいですか?

解決済み:

私が追加した製品コントローラの更新アクションで:

product = Product.where(some params).first rescue nil
if product.blank?
product = Product.create(some values)
end
4

1 に答える 1