如何传递来自模型的错误消息 - >控制器来查看?
= 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
答案 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 !@article.save
render :action => :new
end
end
在新操作中,您无需尝试保存文章,因为创建操作已经完成了该工作。新操作(基本上)存在于调用新视图并为验证消息提供支持。
答案 1 :(得分:0)
new
方法不应保存任何内容。 create
方法应该。
def create
@article = Article.new(params[:article])
if ! @article.save
redirect_to root_path, :error => "ops! something went wrong.."
end
end