rails3上的注意事项和错误

den*_*iss 20 ruby-on-rails ruby-on-rails-3

我在某处读到rails 3 form helper不再有嵌入其中的错误消息.我想知道当我在控制器中设置flash消息或者作为redirect_to中的内联通知时,我应该如何显示flash消息?我怎么能在我的视野中显示它们?有帮助吗?

例如,如果我有

def update
  if @person.save
    flash[:notice] = "Successfully saved!"
  end
end
Run Code Online (Sandbox Code Playgroud)

我如何在我的视图中显示通知?

Bri*_*ing 40

只要在布局中显示flash,flash仍然可以正常工作:

<div id="page">
  <% if flash[:alert] %>
    <p class="flash-error"><%= flash[:alert] %></p>
  <% end %>
  <% if flash[:notice] %>
    <p class="flash-notice"><%= flash[:notice] %></p>
  <% end %>
  <%= yield %>
</div>
Run Code Online (Sandbox Code Playgroud)

您可以手动显示错误消息,也可以使用dynamic_form gem来为您提供旧行为.


Jos*_*ogi 8

您仍然可以在视图中显示Flash消息:

<%= flash[:notice] %>
Run Code Online (Sandbox Code Playgroud)

但是,如果要显示错误消息:

  #In your form
  <%= form_for @foo do |f| %>
    <%= render "shared/error_messages", :target => @foo %>
    ...
  <% end %> 


#shared/_error_messages.html.erb
<% if target.errors.any? %>
<div id="error_explanation">
  <ul>
  <% target.errors.full_messages.each do |msg| %>
    <li><%= msg %></li>
  <% end %>
  </ul>
</div>
<% end %>
Run Code Online (Sandbox Code Playgroud)