我正在尝试使用基础框架显示消息以验证和添加电子邮件地址。验证按预期发生,但不显示任何消息。有什么我想念的吗?
_messages.html.erb
<% flash.each do |name, msg| %>
<% if msg.is_a?(String) %>
<div data-alert class="alert-box round <%= name.to_s == :notice ? "success" : "alert" %>">
<%= content_tag :div, msg %>
<a href="#" class="close">×</a>
</div>
<% end %>
<% end %>
contacts_controller.rb
class ContactsController < ApplicationController
def new
@contact = Contact.new
end
def create
@contact = Contact.new(secure_params)
if @contact.valid?
@contact.update_spreadsheet
flash[:notice] = 'You have been added'
redirect_to root_path
else
flash.now[:alert] = 'Not a valid email'
redirect_to root_path
end
end
private
def secure_params
params.require(:contact).permit(:email)
end
end
application.html.erb
<header>
<%= render 'layouts/navigation' %>
</header>
<%= render 'layouts/messages' %>
<%= yield %>
</body>
</html>
答案 0 :(得分:0)
在消息部分 _messages.html.erb 中,您正在将字符串与符号进行比较,这是未显示消息的原因。
name.to_s是String类和
的对象:notice是Symbol类的对象
问题专栏:
<div data-alert class="alert-box round <%= name.to_s == :notice ? "success" : "alert" %>">
您应该在这里匹配name.to_s == "notice"
答案 1 :(得分:0)
这个问题确实与_messages有关 改变了
<div data-alert class="alert-box round <%= name.to_s == :notice ? "success" : "alert" %>">
到
<div data-alert class="alert-box round <%= name.to_s == 'notice' ? 'success' : 'alert' %>">
并且所有工作都按预期进行。