Rails 3创建方法重定向到索引?

时间:2012-02-14 05:01:43

标签: ruby-on-rails ruby-on-rails-3

我遇到一个问题,当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,但只是想让它按照它的方式工作。有什么建议吗?

2 个答案:

答案 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