У меня есть vilatator в модели сообщений, и он хорошо работает с консоли, но после рендеринга шаблона я не могу показать никаких ошибок.
Мои маршруты
resources :rooms do
resources :messages
end
resources :users
My: новый файл макета
<h1>New Message</h1>
<%= @message.errors.messages[:body] %>
<%= render 'form', message: @message %>
<%= link_to 'Back', room_messages_path %>
_form file
<%= form_with(model: message, url: room_messages_path(params['room_id'],
message) ) do |form| %>
<% if message.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(message.errors.count, "error") %> prohibited this message from being saved:</h2>
<ul>
<% message.errors.messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= form.label :body %>
<%= form.text_area :body %>
</div>
<div class="actions">
<%= form.submit %>
</div>
<% end %>
И код в моем контроллере
def create
p message_params
@message = Message.new(message_params)
@message.room = Room.find(params[:room_id])
@message.user = @current_user
respond_to do |format|
if @message.save
format.html { redirect_to room_message_path(@message.room, @message), notice: 'Message was successfully created.' }
format.json { render :show, status: :created }
else
p @message.errors
format.html { render :action => :new }
format.json { render json: @message.errors, status: :unprocessable_entity }
end
end
end
def message_params
params.require(:message).permit(:body)
end
Я вижу сообщения об ошибках в контроллере, но не могу показать их в файле макета.
#<ActiveModel::Errors:0x00007f5525181100 @base=#<Message id: nil, body: "", created_at: nil, updated_at: nil, user_id: 7, room_id: 3>, @messages={:body=>["can't be blank"]}, @details={:body=>[{:error=>:blank}]}>
Я не знаю, почему это так странно работает, вы можете мне помочь?