Booksというリソースがあります。ルートファイルに適切にリソースとしてリストされています。
新しいビューに標準を与える新しいアクションがあります。
@book = Book.new
モデルには、プレゼンスによって検証される属性がいくつかあるため、保存アクションが失敗すると、エラーが生成されます。
私のコントローラーでは:
@book = Book.create
... # some logic
if @book.save
redirect_to(@book)
else
render :new
end
これはかなり標準的です。また、render:newを使用する理由は、オブジェクトがビューに戻され、エラーが報告されたり、フォームエントリが再入力されたりするためです。
これは機能しますが、(render:newを介して)フォームに返送されるたびにエラーが表示されますが、私のURLはINDEXURLです。
/books
それよりも
/books/new
そもそもそこから始めました。私はこの問題について他のいくつかの投稿を見ましたが、答えはありません。少なくとも、/ books / createにアクセスすると想定されます。これには、ビューファイルもあります(この場合はnewと同じです)。
私がすることができます:
# if the book isn't saved then
flash[:error] = "Errors!"
redirect_to new_book_path
ただし、@ bookデータは、フォームやアクションなどを保持するための全体的なポイントであるエラーメッセージとともに失われます。
通常、そのURLがすべての本を一覧表示するINDEXメソッドを呼び出すのに、render:newがインデックスアクションである/ booksに到達するのはなぜですか?