在表单提交到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
我有什么想法可以解决这个问题吗?
答案 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