ruby-on-rails - 如何在远程为真时呈现闪烁消息
问题描述
我有一个从我的视图调用的时间记录器控制器方法,称为_embed_menu.html.erb
<%= link_to l(:start_time_logger) + ' #' + @issue.id.to_s + ' ',
{:controller => '/time_loggers', :action => 'start', :issue_id => @issue.id},
:class => 'icon icon-start',
:"data-replace" => '#time-logger-menu',
:remote => true
%>
'start' 方法的一部分,我显示了一个错误:
respond_to do |format|
format.js{ flash[:error] = l(:start_time_expired_error)}
end
现在到渲染 Flash 消息的部分。application_helper.rb
有render_flash_messages
功能。
def render_flash_messages
s = ''
flash.each do |k,v|
s << content_tag('div', v.html_safe, :class => "flash #{k}", :id => "flash_#{k}")
end
s.html_safe
end
并且该函数在base.html.erb
模板上调用。
<%= render_flash_messages %>
所以结果 - 我启动了一个启动方法,并且仅在我重新加载页面后才显示。我还尝试重定向,希望在此重定向之后会显示错误。
redirect_to controller: 'issues', format: 'js'
但没有结果。
也许我可以触发 <%= render_flash_messages %> 的重新渲染?
解决方案
如果flash.now[:error]
您需要在同一请求上使用 flash 消息,请使用。
https://api.rubyonrails.org/classes/ActionDispatch/Flash/FlashHash.html#method-i-now https://guides.rubyonrails.org/action_controller_overview.html#flash-now
推荐阅读
- php - 在搜索和用户代理中尝试 php hack/inject:“print(238947899389478923-34567343546345)”
- javascript - Javascript(ES6)从数组中选择/过滤对象并将它们从原始数组中删除的方法
- python - argparse 和互斥的命令行参数
- spring - 如何将此 POST cURL 请求转换为 java 代码
- python - 如何计算给定分布的值的可能性?
- android - 改造调用不更新视图模型或视图模型不更新视图
- android - 何时用刷新令牌交换访问令牌
- jquery - 组件 jquery 无法使用 bower 安装
- python - 连接转储文件
- laravel - 拉拉维尔!QueryException: 找不到驱动程序 (SQL: select * from student)。这个驱动指的是什么?