[英]Best approach to use two different models simultaneously in the same Ruby on Rails view?
所以我正在開發一個 web 應用程序,我有一個博客頁面,有兩個控制器,一個帖子 controller 用於博客,然后訂閱者 controller 只允許用戶添加新訂閱者。 所以目前我使用帖子中定義的視圖呈現內容,然后在其中我有一個部分 _subscriber 來處理訂閱 model。
當用戶嘗試訂閱時,問題就來了。 我希望能夠呈現新操作以顯示驗證,如下所示:
def create
@subscriber = Subscriber.new(subscriber_params)
if @subscriber.save
flash[:success] = "Thank you for subscribing!"
redirect_to subscribers_url
else
render :new, status: :unprocessable_entity
end
end
除了這會導致重復視圖(new.html.erb 與部分視圖相同)這一事實之外,由於它不是部分視圖,它會重新加載整個頁面,現在僅用訂閱表單替換所有帖子。 目前,我的解決方法是在用戶單擊按鈕時進行重定向,但不會顯示驗證錯誤,這並不是一個理想的解決方案。
我嘗試只渲染部分,而不是:new 動作,如下所示:
render partial: 'subscriber', status: :unprocessable_entity
但是和只調用redirect的效果一樣; 我的驗證錯誤不會顯示。
也許理想的解決方案是使用 AJAX 之類的東西。 我試圖了解 Turbo Frames 和 Turbo Streams,但我有點困惑如何在這種情況下實現它。 本質上,我可以將我的帖子頁面的訂閱部分包裝在一個渦輪框架中,但是我將如何更新渦輪框架? 我不想有不同的帖子頁面,因為那沒有意義。 我只想改變里面視圖的內容。
實現此功能的正確/最佳實踐方式是什么? 任何建議,將不勝感激!
如果您不想實際重新加載頁面,那么是的,您需要對 AJAX / UJS 或 Turbo 幀執行一些操作。
(或 go 使用 React 或 Node 或其他一些 JS 解決方案的黑暗面)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.