2011-08-14 39 views
2

モデル - >コントローラからのエラーメッセージを表示するにはどうすればいいですか? 3.0.9form_tagを使用するとエラーメッセージが表示されますか?

+2

あなたがこれを確認しましたか?私はそれがあなたの質問に答えると信じています:http://railsforum.com/viewtopic.php?id=30889また、 'form_for'を使って' form_tag'を使っているのはなぜでしょうか? –

+0

私の計画は実際に別のコントローラを使用することです。 – Ben

+0

「別のコントローラを使用する」とはどういう意味ですか?あなたがしようとしていることから詳細を提供してください。 –

答えて

3

のエラーメッセージがあなたのモデルに格納されている、私はRailsのを使用してい

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

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

を:私のコントローラで

class Article < ActiveRecord::Base 
    attr_accessible :article 

    validates   :article,  :presence => true 
end 

= 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" 

私は、このモデルを持っています。 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

関連する問題