我创建了rails 5应用程序,我在控制器和视图中有以下代码来显示flash消息。我看到很多这样的问题,但我无法解决问题。
控制器端
respond_to do |format|
if @trigger.update(trigger_params)
flash[:success] = 'Trigger was successfully updated.'
format.html { redirect_to edit_project_trigger_path(@trigger, project_secret_key: @project.secret_key) }
format.json { render :show, status: :ok, location: @trigger }
else
error = ''
@trigger.errors.full_messages.each do |msg|
error += "#{msg} <br>"
end
flash.now[:error] = error
format.html { render :new }
format.json { render json: @trigger.errors, status: :unprocessable_entity }
end
end
查看方
<% if flash[:error].present?%>
<div class="alert alert-danger alert-message alert-message-common" role="alert">
<%= flash[:error].html_safe %>
</div>
<% end %>
<% if flash[:notice].present? %>
<div class="alert alert-success alert-message alert-message-common" role="alert">
<%= flash[:notice].html_safe %>
</div>
<% end %>
<% if flash[:alert].present? %>
<div class="alert alert-danger alert-message alert-message-common" role="alert">
<%= flash[:alert].html_safe %>
</div>
<% end %>
<% if flash[:success].present?%>
<div class="alert alert-success alert-message alert-message-common" role="alert">
<%= flash[:success].html_safe %>
</div>
<% end %>
显示使用提醒但未显示成功消息。 rails 5中有任何问题或我的代码中有任何问题吗?
我希望警报工作,因为页面渲染和成功因为重定向而无效。
答案 0 :(得分:0)
默认情况下仅支持alert
和notice
闪存键。
要添加success
:
class ApplicationController
add_flash_types :successs
参考:Ruby Guides
答案 1 :(得分:-1)
试试这个:
format.html { redirect_to edit_project_trigger_path(@trigger, project_secret_key: @project.secret_key), :success => 'Trigger was successfully updated.' }
答案 2 :(得分:-1)
这应该有效:
format.html { redirect_to edit_project_trigger_path(@trigger, project_secret_key: @project.secret_key), flash: {success: 'Trigger was successfully updated.'} }
出于某些原因,您应该在 redirect_to 方法中注意或警告键,但如果您需要成功或其他,您应该在 flash 键中使用嵌套哈希。
点击此处http://blog.remarkablelabs.com/2012/12/register-your-own-flash-types-rails-4-countdown-to-2013
答案 3 :(得分:-1)
redirect_to的Rails文档提到:“对于常用的闪存名称alert
和notice
以及通用闪存存储区,有两个特殊的访问器。”您需要对其他任何语法使用常规的flash
语法。