电子邮件验证消息Rails和基础

时间:2014-05-24 05:11:43

标签: ruby ruby-on-rails-4 zurb-foundation

我正在尝试使用基础框架显示消息以验证和添加电子邮件地址。验证按预期发生,但不显示任何消息。有什么我想念的吗?

_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">&times;</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>

2 个答案:

答案 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' %>">

并且所有工作都按预期进行。