Rails:重定向到提交的同一页面表单,不显示flash消息

时间:2011-12-03 19:43:54

标签: ruby-on-rails

在表单提交到sexes_controller中的“创建”操作时,我已经改变了实际重定向到表单提交的页面视图/结果/索引的内容,但是现在即使我没有显示flash消息正在做

<%= flash[:notice] %>

在views / results / index的底部(即表单提交的页面),这就是我假设你应该这样做的方式。

是不是因为某种缓存发生了flash消息没有出现?知道怎么解决这个问题吗?

更新

认为它可能更复杂,我试图在结果控制器的索引操作中检索flash消息

@flashbash = Sex.find(params[:id])

然后回到views / results / index

<%= if @flashbash flash[:notice] %>  (I think this code is wonky)
注意,我试过这个,但它没有用。它说,Couldn't find Sex without an ID

我有什么想法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:6)

通常,Flash会在应用程序的布局文件中呈现。这避免了重复输出&lt;%= flash [:notice]%&gt;在每个可能有闪光信息的视图中。

至于为什么它没有显示你正在设置你的flash [:notice]变量以及要显示的内容。控制器中创建操作的示例可能如下所示:

# app/controllers/sex_controller.rb
def create
  @sex = Sex.new(params[:sex])
  if @sex.save
    flash[:notice] = "Saved successfully"
    redirect_to @sex # This redirects to the show action, where the flash will be displayed
  else
    flash[:error] = "There were errors..."
    render :action => :new # This displays the new form again
  end
end

# app/layouts/application.html.erb
<html>
  ...
  <%= flash[:notice] %>
  <%= flash[:error] %>
  <%= yield %>
  ...
</html>

有关Flash消息的更多信息,请访问:http://guides.rubyonrails.org/action_controller_overview.html#the-flash