我在线关注Michael Hartl的Rails 5教程。我在玩具应用程序部分。我有一个简单的用户脚手架。当我创建一个新用户时,我被重定向到了show模板,但是没有显示flash通知消息内容。
控制器代码如下:
def create
@user = User.new(user_params)
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
end
end
end
视图代码在这里:
<p id="notice"><%= notice %></p>
正在创建P元素并接收适当的CSS样式,但邮件未传递给它。
基本上,我的输出结果是这样的:
<p id="notice"></p>
我将此添加到视图中:
<% if flash[:notice].blank? %>
<h1> flash notice is blank </h1>
<% end %>
...我收到闪光通知为空白的消息。
我使用的是Rails 5.0.0.1和Ruby 1.3.2。谢谢。
答案 0 :(得分:0)
好的,这与我对application_controller.rb文件进行的编辑有关。我第一次尝试创建新用户时收到错误:
ActionController :: UsersController中的InvalidAuthenticityToken #create
为了解决这个问题,在我的application_controller.rb文件的第二行,我改变了这个:
protect_from_forgery with: :exception
到此:
protect_from_forgery with: :null_session
我想这会使我的会话“无效”,可以这么说,所以某些会话变量没有通过,包括flash消息?
无论如何,这个改变让我可以很好地创建新用户,但之后我发现没有显示flash通知消息。
为了解决这个问题,我将:null_session更改回:application_controller文件上的异常,然后我向users_controller.rb文件添加了一个新行,该文件跳过了对新用户的身份验证令牌的验证。这可能不适合制作,但为了完成本教程,这是一个开始:
class UsersController < ApplicationController
skip_before_action :verify_authenticity_token