2011-08-14 95 views
2

如何传递来自模型 - >控制器来查看的错误消息?使用form_tag时传递错误消息?

= form_tag :controller => "article", :action => "create" do 
/how to retrieve error messages here? 
    %p 
    = label_tag :article, "Article" 
    = text_field_tag :article 
    = submit_tag "Submit Article" 

我有这样的模式:

class Article < ActiveRecord::Base 
    attr_accessible :article 

    validates   :article,  :presence => true 
end 

在我的控制器:

def create 
    @article = Article.new(params[:article]) 

    if ! @article.save 
    # how to set errors messages? 
    end 
end 

我用Rails 3.0.9

+2

你见过?我相信它回答你的问题:http://railsforum.com/viewtopic.php?id=30889另外,为什么你使用'form_tag'使用'form_for'应该在这种情况下更好地工作吗? –

+0

我的计划实际上是使用另一个控制器。 – Ben

+0

“使用其他控制器”是什么意思?请提供您正在尝试做的更多细节。 –

回答

3

的错误信息存储在你的模型。您可以通过错误方法访问,如您在http://api.rubyonrails.org/classes/ActiveModel/Errors.html中看到的那样。 一个简单的方法来揭露错误消息是包括在你看来后续行:

%span= @article.errors[:article].first 

但是,我相信你必须改变你的控制器是这样的:

def new 
    @article = Artile.new 
end 

def create 
    @article = Artile.new params[:article] 
    if [email protected] 
    render :action => :new 
    end 
end 

在新您无需尝试保存文章,因为创建操作已经完成了该项工作。新操作存在,(基本上)调用新视图并为验证消息提供支持。

0

new方法不应该保存任何东西。方法应该是create

def create 
    @article = Article.new(params[:article]) 

    if ! @article.save 
    redirect_to root_path, :error => "ops! something went wrong.." 
    end 
end 
+0

谢谢。我改变了它。 – Ben