我有一個顯示一本書的頁面,它有很多評論。在這個頁面上還有一個表單來寫一個新的評論,並將它發佈到評論控制器的創建操作。當您發佈表單時,也會發送相應書籍的ID,以便可以正確建立關係。如何將表單錯誤發送回它們來自哪裏?
在評論控制器中,我們嘗試保存評論。以下是我的控制器看起來像:
def create
@review = current_user.reviews.build(params[:review])
@book = Book.find_by_ean params[:book]
@review.book = @book
if @review.save
redirect_to book_path(@book)
else
# In here I want to go back to book_path(@book), sending @review with it so that I can have access to @review.errors
end
end
當然,當審查無法保存(審查內容爲強制性例如)我想回去的書展示頁面,並顯示形式,隨着錯誤給用戶。現在,據我可以工作了,這裏還有兩個可能性:
- 呈現「書籍/秀」,:回顧=> @review ---這不送回伴隨錯誤的審查(我想,不是100%),但URL保持爲「/ reviews」,導致大量問題。例如,我保存在「/ books」目錄中的部分內容無法找到。
- redirect_to book_path(@book)---這確實讓我回到正確的URL,但它不會發送@review,所以我不能顯示錯誤消息。
解決此問題的最佳方法是什麼?