2016-06-30 1 views
0

У меня есть что-то вродеКак распечатать сообщения проверки для form_for: post structure?

<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. Я не могу понять, как я могу переместить его в сторону контроллера 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 [email protected] [email protected]=0; 
    @scribble.save 
    @scribbles = Scribble.order("scribbles.scribble DESC").all 
    render :index 
    end 

ответ

0

Вот как я из-ставить какие-либо ошибки или сообщения проверки:

Контроллер:

def create 
    @scribble = Scribble.new(profile_params) 
    @scribble.likes [email protected] [email protected]=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.

Смежные вопросы