我遇到一个问题,当article.save因用户输入无效而失败时,我的article_controller.rb的create方法会重定向到索引。文章创建网址是/ articles / new但是当提交失败时,我被重定向到/ articles。表单仍然可以在/ articles / articles中使用。期望的行为是返回/ articles / new,无论用户在表单中重新填充的是什么。有没有办法做到这一点?以下是一些代码片段,用于说明正在发生的事情。
这是文章的新方法:
def new
@article = Article.new
respond_to do |format|
format.html
end
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(@article) do |f| %>
.....
<% end %>
我最终希望能够使用:remote =&gt; :在form_for中调用true,但只是想让它按照它的方式工作。有什么建议吗?
答案 0 :(得分:2)
尝试
format.html { render :action => "new" }
答案 1 :(得分:1)
如果您使用的是Rails 3+,请尝试编写类似于DRY的控制器。
class ArticlesController < ApplicationController
respond_to :html
def new
@article = Article.new
respond_with @article
end
def create
@article = Article.new(params[:article])
@article.save
respond_with(@article)
end
end