これは私のフォームであり、正常に動作しますが、今は AJAX にしたいと考えています。
<%= form_tag variant_path(variant.id), :method => :put, :class => 'update_inv_form' do %>
<%= text_field_tag :inventory_quantity, variant.inventory_quantity %>
<%= submit_tag 'Update' %>
<% end %>
:remote => true 属性を追加すると、フォームは AJAX 経由で正常に送信されます (サーバーで発生していることがわかり、ページを更新すると変更が表示されます)。ページを更新せずにビューを適切に更新して変更を表示したい。これが私の更新アクションです: (ここでは ActiveRecord モデルを扱っていないことに注意してください。)
def update
variant = ShopifyAPI::Variant.find(params[:id])
variant.inventory_quantity = params[:inventory_quantity]
variant.save
redirect_to root_path
end
更新
これを理解するのに役立った回答に感謝しますが、解決策は彼が言ったとおりであることがわかりましたが、小さな問題に遭遇しました。更新したいビューがapp/views/home/index.html.erb
あり、これを扱っていました: Variants#update. (バリアント コントローラ、更新アクション)
ビューと同じディレクトリに update.js.html を配置していましたがapp/views/home
、サーバーが 500 エラーをスローしていました: テンプレートがありません。結局のところ、ディレクトリを作成し、app/views/variants/
そこに update.js.html ファイルを配置する必要がありました。問題が解決しました。