簡體   English   中英

Rails表單,加載新的記錄頁面,而不是重定向到該頁面

[英]Rails form, load new record page rather than redirecting to it

我正在用Rails創建我的第一個應用程序。 基本上,我有一個新的客戶表單,通常在您輸入新客戶時,您將被重定向到您創建的記錄。

但是,當我通過ajax加載我的所有頁面時,我想加載新記錄,而不是重定向到它。

我已經通過ajax觸發了表單,我只需要知道如何訪問新記錄URL即可將其加載到我的容器中。

希望有道理。 提前致謝!

您可以在form_for helper方法中添加一個:remote => true選項,以便通過Ajax發布表單而不是頁面重定向。 對於Ex:

<%= form_for(@post, :remote => true) do |f| %>
  ...
<% end %>

然后創建一個名為create.js.erb的新模板,該模板將在執行create方法后呈現。

在此模板中,您可以顯示您創建的新記錄的詳細信息。

對於Ex:

$('some_element').replaceWith('<%=@posts.name %>');

編輯:您提到在JavaScript中使用load。 我通常會避免這種情況,因為您要進行兩次服務器往返。 1)創建2)獲取html以加載到div中。 此外,如果發生錯誤,無論發生什么事情,都將很難捕獲並執行“好事”。

將remote:true選項添加到表單后,您需要處理服務器端發生的事情。

假設您使用REST,您將擁有一個帶有create動作的控制器。 通常,此方法創建項目,然后返回創建頁面的HTML。 取而代之的是,我們需要為該操作創建一個javascript視圖。 這將告訴調用頁面該操作何時生效。

假設您的表單具有一個名為“ new_record_form”的div,並且您還有另一個名為“ new_records”的div。 您需要清空表單中的表單元素,以有效地對其進行重置。 您還將希望將新記錄添加到“ new_records” div中。

要將記錄添加到新記錄div中,您可以執行以下操作。

$("#new_records").append("#{@new_record.name}");

提交表單時,您應該會看到添加的內容。 調試問題的一種好方法是使用檢查器。 如果您使用的是Chrome瀏覽器,請右鍵單擊任意位置,檢查元素並選擇網絡。 在提交表單之前執行此操作。 您將能夠看到ajax調用和響應。 您的日志也將有所幫助。

別忘了也將表格空白。

注意:您提到所有頁面都是ajax,但是我強烈建議您評估由於各種問題而導致的100%合理性。 並不是說這是關於該主題的最佳文章 ,但可能值得一讀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM