私はarticle.saveがユーザーの入力が無効であるために失敗したときに、私のarticle_controller.rbの作成メソッドがインデックスにリダイレクトされているという問題があります。記事作成URLは/ articles/newですが、投稿が失敗すると/ articlesにリダイレクトされます。このフォームは/ articles/newと同じように/ articlesで利用できます。希望の動作は、ユーザーがフォームに再入力した可能性のあるものを/ articles/newに戻すことです。これを行う方法はありますか?ここでは、何が起こっているのかを示すためのコードスニペットをいくつか示します。ここでRails 3はインデックスにリダイレクトするメソッドを作成しますか?
def new
@article = Article.new
respond_to do |format|
format.html
end
end
記事はメソッドを作成されています:
<%= form_for(@article) do |f| %>
.....
<% end %>
私は最終的に願っています:ここで
def create
@article = current_user.articles.new(params[:article])
respond_to do |format|
if @article.save
format.html { redirect_to(@article, :notice => 'Article was successfully created.') }
else
format.html { render 'new' }
end
end
end
が形です。ここ
は記事新しい方法であり、 form_forでremote =>:trueを呼び出すだけで、これを動作させることができますが、最初にそれを動作させたいと思っています。助言がありますか?
が、私はこれが正しいコードであると信じ、そして舞台裏で、それは* *私の形でcalles new.html.erbファイルを、レンダリングしている、しかし、RESTfulなURLはまだ記事/として来ています、/articles/newではありません。なぜこれが起こっているかもしれないのか? – botbot
テンプレートをレンダリングすることは、コントローラコード/メソッド(new)を実行することなく、単に「ページをレンダリング」することです。 http://blog.markusproject.org/?p=3313 – rajibchowdhury
このリンクの記事は、この状況ではcreateメソッドがnew.htmlを再レンダリングしているので、私はredirect_toではなくrenderを使用したいと言っているのは正しいです。ユーザーが何を入力したかを失うことなくerb。 redirect_toはユーザーが入力した値を失うので、それは私が望むものではありません。 – botbot