【问题标题】:Rails 5 ... No flash notice messageRails 5 ...没有闪烁通知消息
【发布时间】:2016-10-11 14:51:09
【问题描述】:

我正在在线关注 Michael Hartl 的 Rails 5 教程。我在玩具应用程序部分。我有一个简单的用户脚手架。当我创建一个新用户时,我被重定向到显示模板,但没有显示 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 %>

...我收到消息说 Flash 通知是空白的。

我使用的是 Rails 5.0.0.1 和 Ruby 1.3.2。谢谢。

【问题讨论】:

  • 您的 CSS 样式没有隐藏或根据消息隐藏?
  • 不,它可以从scaffold.css 文件中提取#notice 样式。
  • 据我所知,消息没有条件。

标签: ruby-on-rails


【解决方案1】:

好的,这与我对 application_controller.rb 文件所做的编辑有关。第一次尝试创建新用户时,收到错误消息:

UsersController#create 中的ActionController::InvalidAuthenticityToken

为了解决这个问题,在我的 application_controller.rb 文件的第二行,我改变了这个:

protect_from_forgery with: :exception

到这里:

protect_from_forgery with: :null_session

我猜这“无效”了我的会话,可以这么说,所以某些会话变量没有通过,包括 Flash 消息?

不管怎样,这个更改让我可以很好地创建新用户,但后来我发现没有显示 Flash 通知消息。

为了解决这个问题,我将 application_controller 文件中的 :null_session 改回了 :exception,然后我在 users_controller.rb 文件中添加了一个新行,该行跳过了对新用户的身份验证令牌的验证。这可能不适合生产,但为了完成教程,这是一个开始:

class UsersController < ApplicationController
  skip_before_action :verify_authenticity_token

【讨论】:

    猜你喜欢
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 2021-04-01
    • 1970-01-01
    相关资源
    最近更新 更多