如何为form_for打印验证消息:post structure?

时间:2016-06-30 18:59:11

标签: ruby-on-rails validation form-for

我有类似

的东西
<div class="userInput">
    <%= form_for :scribble do |f| %>
    <%= f.text_area :scribble, cols: 65, rows: 4,:maxlength => 255%>
    <%= f.submit %>
    <% end %>
</div>

1)我的Scribble模型具有最小和最大字符长度验证,现在如何在此处打印错误消息。如果它是一个实例变量,我知道如何打印,但这是一个符号。

2)此代码存在于application.html.erb中。我无法理解如何将其移动到除了appliation之外的Scribble控制器的视图中。问题是这个表格不是独立的,它是控制器Scribbles的动作索引显示的一部分,(并且表格应该始终显示),动作索引已经在做涂鸦列表。

控制器

  def index
    @scribbles = Scribble.order("scribbles.scribble DESC").all
  end

  def show
  end

  def new
  end

  def create
    @scribble = Scribble.new(profile_params)
    @scribble.likes =@scribble.dislikes =@scribble.shares=0; 
    @scribble.save
    @scribbles = Scribble.order("scribbles.scribble DESC").all
    render :index
  end

1 个答案:

答案 0 :(得分:0)

这里我如何输出任何错误或验证消息:

<强>控制器:

def create
    @scribble = Scribble.new(profile_params)
    @scribble.likes =@scribble.dislikes =@scribble.shares=0;

    if @scribble.save 
      flash[:notice] = "Scribble is successfully created"
      redirect_to root_url
    else #
      render 'index'
    end
 end

<强>查看: 如果有_error_messages.html.erb

,则创建一个部分显示错误消息
<% if object.errors.any? %>
    <div id="error_explanation">
      <div class="alert callout text-center" data-closable>
        <p><strong>This form contains <%= pluralize(object.errors.count, 'error') %>.</strong></p>
        <ul>
          <% object.errors.full_messages.each do |msg| %>
              <li><%= msg %></li>
          <% end %>
        </ul>
        <button class="close-button" aria-label="Dismiss alert" type="button" data-close>
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
    </div>
<% end %>

渲染错误: 现在,您可以调用<%= render 'layouts/error_messages', object: @scribble %>并将其放在视图中的任何位置以呈现错误验证。 note: the object is passed, so it can be re-use to any form.归功于Hartl Tutorial。