這是我的表單,它工作正常,但現在我想要AJAX它。AJAX Rails 3.2表單提交
<%= 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 %>
當我添加了:遙控=> true屬性的形式通過AJAX成功提交(我可以看到它發生在服務器上,我可以看到的變化,當我刷新頁面)。我想正確更新視圖以顯示更改而不刷新頁面。這是我的更新操作:(注意,我不與ActiveRecord的模式在這裏工作)
def update
variant = ShopifyAPI::Variant.find(params[:id])
variant.inventory_quantity = params[:inventory_quantity]
variant.save
redirect_to root_path
end
UPDATE 謝謝你幫助我弄清楚了這一點原來的解決方案是完全一樣的,他說的答案,但是我遇到了一個小問題。我想更新的視圖生活在app/views/home/index.html.erb
,我正在處理這個問題:Variants#update。 (變體控制器,更新動作)
我把我的update.js.html放在與我的視圖相同的目錄中:app/views/home
和我的服務器拋出500錯誤:Missing Template。事實證明,我不得不創建一個app/views/variants/
目錄,並將update.js.html文件放在那裏。問題解決了。
謝謝,我稍後再嘗試併發布更新。我沒有使用任何部分,這種形式住在我的index.html.erb頁面上。我應該在更新操作中使用實例變量@variant而不是本地變量,就像你在這裏一樣? – dylanjha
是的,因爲您需要訪問update.js.erb文件中的變量。我已經添加到我的答案中,讓您更好地瞭解如何更新更新頁面。 –
謝謝!我陷入了讓js模板執行但最終弄清楚的一點點。我發佈了一個更新。再次感謝。 – dylanjha