2012-04-10 37 views
0

私の送信フォームにエラーメッセージが表示されません...間違って入力して送信すると、更新されます。それはエラーメッセージを表示するはずです - 添付のコードを見てください - 何らかの理由でそうではありません。なぜこれが起こっているのか分かりません。フォームにエラーメッセージが表示されない(Rails 3プロジェクト)

アドバイスをいただければ幸いです!

おかげで、

ファイサル

_FORM.HTML.ERB

<% if @post.errors.any? %> 
<div id="error_explanation"> 
    <h2><%= pluralize(@post.errors.count, "error") %> prohibited this post from being saved:</h2> 
<ul> 
    <% @post.errors.full_messages.each do |msg| %> 
    <li><%= msg %></li> 
    <% end %> 
    </ul> 
</div> 
<% end %> 

<div class="field"> 
I am a <%= f.text_field :title %> getting married in <%= f.text_field :job %> in <%= f.text_field :location %>, and looking for a wedding photographer. My budget is <%= f.text_field :salary %>. 
</div> 

<form> 
<div id="first_button"> 
<button type="button" id="your_button" class="btn span6 large">Submit</button> 
</div> 

<div id="real_form"> 
<%= recaptcha_tags %> 
<button type="submit" class="btn span6 large">Submit</button> 
</div>​ 

</form> 

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
    $("#real_form").hide(); //this will hide the `real_form` div on page load 
    $("#your_button").click(function() { 
     $("#real_form").show(); // this will show the `real_form` on clicking of `any_button` button 
     $("#first_button").hide(); 
    }); 
}); 
</script> 
<% end %> 

ポストCONTROLLER

def create 
@post = Post.new 

respond_to do |format| 
    if verify_recaptcha 
     if @post.save 
      format.html { redirect_to :action=> "index"} 
      format.json { render :json => @post, :status => :created, :location => @post } 
     else 
      format.html { render :action => "new" } 
      format.json { render :json => @post.errors, :status => :unprocessable_entity } 
     end 
    else 
      flash[:message] = 'Please try filling out Recaptcha again' #added to confirm an error is present 
      format.html { render :action => "new" } 
      format.json { render :json => @post } 
    end 
end 
end 

POST MODEL

class Post < ActiveRecord::Base 
validates :title, :job, :location, :salary, :presence => true 
validates :salary, :numericality => {:greater_than_or_equal_to => 1} 
end 

記事> New.Html.Erbファイル、フォームが示すように

<div class="hero-unit"> 
<h1>Find wedding photographers with ease.</h1> 
<br> 
<p>Post your needs and sit back and wait to get responses.</p> 
<br> 
<%= render 'form' %> 
<%= flash[:message] %> 
</div> 

答えて

0

すべてのエラー、別の問題があるかもしれないモデルを保存防ぎます。モデルをレールコンソールに保存できることを確認してください。

+0

オープンレールコンソール 'rails c'は新しいモデル' p = Post.new ... 'を作成し、' p.save'を保存します。コンソールには冗長性があるため、問題を見つけるチャンスがありますが、これは助けにならないケースがあります(例はデータベースの問題です)。 – Hassan

+0

私はRailsコンソールを使っていても投稿は保存されません...上記のエラーメッセージを見てください。 – hikmatyar

+0

これは正常に保存されていますが、まだエラーメッセージが表示されていません。問題は... – hikmatyar

0

Deviseまたは他の認証ライブラリを使用していますか。

(あなたは認証ライブラリーを持っていない場合には、むしろちょうどリダイレクトあなたをログアウトだろうが、それは行動かもしれない)

あなたはまた、使用する必要がありますあなたはあなたのフォームで真正トークンを配置する必要がある場合がありますform_for @postのようになります。これにより、あなたの入力があなたの新しい関数に対して正しく命名されます(あなたのために認証トークンに入れられます)。

問題がモデルにある場合もあります。フォームで送信された属性をホワイトリストに登録する必要があります。

+0

認証ライブラリを使用していません。上記の私の投稿モデルも追加しました。具体的な変更は何ですか? – hikmatyar

+1

'attr_accessible:title、:job、:location、:salary'を試してみてください。 –

+1

新しいものを入れずにレコードを作成してみてください。別のエラーが発生した場合は、別のエラーです。ありがとう。 –

関連する問題