表单未显示错误消息(Rails 3项目)

时间:2012-04-10 07:18:52

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

我的提交表单没有显示错误消息...当我填写错误并提交时,它只是刷新。它应该显示错误消息 - 请参阅附加代码 - 但由于某种原因它不是。不知道为什么会这样。

非常感谢任何建议!

谢谢,

费萨尔

_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 %>

POSTS 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

帖子&gt; 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>

2 个答案:

答案 0 :(得分:0)

由于您的表单显示所有错误,因此可能存在另一个阻止保存模型的问题。确保您可以在rails控制台中保存模型。

答案 1 :(得分:0)

您使用的是Devise还是其他身份验证库。

您可能需要在表单中放置一个真实性令牌(虽然这会将您注销而不仅仅是重定向,但如果您没有auth库,则可能是行为)

您还应该使用form_for @post,以便为您的新功能正确命名输入(将为您输入身份验证令牌)。

您的问题也可能出现在您的模型中,您可能需要将表单发送的属性列入白名单。