如何让 flash[:notice] 显示在我的视图中?
How do I get flash[:notice] to display in my view?
我很难让我的通知显示在我的 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 %>
但尽管我知道通知已设置(我在我的 URL 中看到了),但在我看来上面没有被调用(我没有看到 HTML class="flash-notice"
).
有没有其他方法可以在重定向中设置 flash 通知?或者我是否应该使用重定向(有人告诉我在 URL 查询字符串中嵌入消息可能存在一些安全风险)?
尝试
flash[:notice] = 'bla'
redirect_to controller: "users", action: "edit"
我很确定
redirect_to edit_user_path(user), notice: 'bla'
也可以。出于某种原因,您的语法显然没有选择 notice 修饰符。但是您必须将用户分配给您当前的用户才能使其正常工作。
您目前正在使用密钥 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 参数传递,否则我建议您这样做。
我很难让我的通知显示在我的 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 %>
但尽管我知道通知已设置(我在我的 URL 中看到了),但在我看来上面没有被调用(我没有看到 HTML class="flash-notice"
).
有没有其他方法可以在重定向中设置 flash 通知?或者我是否应该使用重定向(有人告诉我在 URL 查询字符串中嵌入消息可能存在一些安全风险)?
尝试
flash[:notice] = 'bla'
redirect_to controller: "users", action: "edit"
我很确定
redirect_to edit_user_path(user), notice: 'bla'
也可以。出于某种原因,您的语法显然没有选择 notice 修饰符。但是您必须将用户分配给您当前的用户才能使其正常工作。
您目前正在使用密钥 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 参数传递,否则我建议您这样做。