我很难在Rails 5视图中显示通知。我在控制器中设置了这个before_filter
方法:
def check_email_confirmed!
redirect_to controller: "users", action: "edit", notice: 'Please confirm your email.' unless current_user.email_confirmed
end
在我看来我有这个
<% if flash[:notice] %>
<p class="flash-notice"><%= flash[:notice] %></p>
<% end %>
但是尽管我知道通知已经设置(我在我的网址中看到它),但我的视图中没有调用上面的内容(我看不到带有class="flash-notice"
的HTML)。
还有其他方法我应该在重定向中设置Flash通知吗?或者我应该使用重定向(有人告诉我,在URL查询字符串中嵌入消息可能存在一些安全风险)?
答案 0 :(得分:1)
您当前正在使用键notice
设置参数,而不是在会话中设置闪光灯。
要按照您的方式完成此任务,您必须这样做:
<p class="flash-notice"><%= params[:notice] %></p>
我参与过的大多数Rails应用都在控制器方法中设置了session[:flash]
,在这种情况下你可以这样做:
unless current_user.email_confirmed
redirect_to edit_user_path(current_user)
flash[:notice] = 'Please confirm your email.'
end
除非您有充分的理由将通知文本作为URL参数传递,否则我建议您这样做。
答案 1 :(得分:0)
尝试
flash[:notice] = 'bla'
redirect_to controller: "users", action: "edit"
我很确定
redirect_to edit_user_path(user), notice: 'bla'
也会奏效。出于某种原因,您的语法显然不会选择通知修饰符。但是,您必须将用户分配给当前用户才能使其显然正常工作。