私のアプリでは、新しい投稿を作成するためのフォームを作成しました (投稿はモデルです)。投稿という名前のコントローラーがあります。フォームは管理者コントローラーにあります。フォームは form_for(@post) を使用します。ポストコントローラーに投稿します。この方法では、投稿が正常に作成されます。しかし、問題は提出の失敗です。フォームに、エラーを表示するコードを追加しました
<% if @post.errors.any? %>
<div id="error_explanation">
<div class="alert alert-error">
The form contains <%= pluralize(@post.errors.count, "error") %>
</div>
<ul>
<% @post.errors.full_messages.each do |msg| %>
<li> <%= msg %> </li>
<% end %>
</ul>
</div>
<% end %>
しかし、post コントローラーでは、送信に失敗した場合、admins コントローラーの newpost ページに redirect_to に設定しました。リダイレクトすると、エラー メッセージが表示されなくなります。
だから、私は追加しました
render 'dasharea/newpost'
localhost:3000/dasharea/newpost はフォームのあるページの URL です。このコードでは、
Missing template dasharea/newpost with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}.
しかし、私はすでにそのページにいますか?次に、コントローラーとアクションを次のように追加しようとしました(注:投稿コントローラーの作成アクションを編集しています。管理コントローラーでnewpostアクションをレンダリングする必要があります):
render 'admins/newpost'
次に、投稿に移動します:
http://localhost:3000/posts
しかし今、フォームはそこにあり、エラーを見ることができます。しかし、フォーム (dasharea/newpost) を持っている元のページをレンダリングする必要があります! これどうやってするの?私は何を間違えましたか?