我正在使用“web_app_theme”宝石。问题是闪存错误和警告消息不起作用。
例如,在“登录”页面中它确实有效;但在“忘记密码”页面中它不起作用。我通过显示flash <%= debug flash %>
的内容来测试它。
这是我在登录页面中得到的内容......
!ruby/object:ActionDispatch::Flash::FlashHash
used: !ruby/object:Set
hash:
:alert: true
closed: false
flashes:
:alert: Invalid email or password.
now: !ruby/object:ActionDispatch::Flash::FlashNow
但是在Forgot Password页面我得到了......
!ruby/object:ActionDispatch::Flash::FlashHash
used: !ruby/object:Set
hash: {}
closed: false
flashes: {}
now: !ruby/object:ActionDispatch::Flash::FlashNow
我认为它可能与不使用haml有关。在登录页面我使用haml,但在忘记密码页面我正在使用erb。我很困惑,因为无论格式如何,“flash”的内容都应该相同,对吧?
答案 0 :(得分:0)
这与您使用的视图代码无关。
根据您的问题,很明显忘记密码页面中的闪存尚未设置。 要么已经设置和删除了。使用HAML或ERB无关紧要,因为两个页面中都存在Rails闪存。
检查控制器代码并验证该页面上闪存的内容。
此外,虽然没有严格的规则,但强烈建议在单个应用程序中仅使用一个模板/视图引擎(erb或haml)。
答案 1 :(得分:0)
在“忘记密码”页面上,是否设置了flash
对象,然后呈现了页面,还是正在设置页面,然后重定向到页面发生?
flash
的正常用例是您为其分配,然后重定向到存在闪存的另一个页面。如果您想使用flash
,然后在同一操作中显示它的内容(例如渲染模板)
而不是写(例如)
flash[:notice] = 'Foo Bar'
你写
flash.now[:notice] = 'Foo Bar'