呈现Flash消息后丢失的元素ID?

时间:2013-05-07 22:18:35

标签: ruby-on-rails ruby-on-rails-3

在我的application.html.erb中,我有:

    <body<% if iscontact? %> id="contact"<% end %>>'

在同一个文件中我有:

    <div class="container">
    <% flash.each do |key, value| %>
      <div class="alert alert-<%= key %>"><%= value %></div>
    <% end %>
    <%= yield %>
    </div>'

发生验证错误后,我丢失了附加到我添加到正文的ID的样式(上面的“联系人”ID)。我失去了身份,因此我失去了造型。

可以在http://dev.mym5realty.com/contact上看到该示例。只需单击发送按钮,您将看到ID丢失。请不要发送真实的消息。请。

有没有办法防止在flash消息后丢失id?

在验证错误后我也丢失了关闭按钮图像...如果是iscontact非常相似?页面然后显示按钮图像。

所以我的application_helper似乎没有在flash进程中的任何地方执行OR,它不在'/ contact'页面上。

def iscontact?
if current_page?('/contact')
  return true
end

return false
end

和控制器:

class ContactController < ApplicationController

def new
  @message = Message.new
end

def create
@message = Message.new(params[:message])

if @message.valid?
  NotificationsMailer.new_message(@message).deliver
  redirect_to(root_path, :notice => "Message was successfully sent.")
else
  flash.now.alert = "Please fill all fields."
  render :new
end
end

1 个答案:

答案 0 :(得分:0)

文档建议您在current_page?方法中明确声明控制器和操作。链接在这里: http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-current_page-3F

您可能会使用以下内容:

def iscontact?
  if current_page?(:controller => 'contact', :action => 'new')
    return true
  elsif current_page?(:controller => 'contact', :action => 'create')
    return true
  else
    return false
  end
end

干杯!