我正在尝试使用Rails在Ajax中显示flash的错误消息,但它没有显示它,我已经尝试了几种方法来实现它,但我无法正确使用它。
以下是显示错误的表单:
#flash-error.flash-error{:style => "display: none"}
#flash-notice.flash-info{:style => "display: none"}
%h3 New Document
- form_for(:repo_document, :url => {:all_categories => @repo_categories, :action => "create", :format => "js", :query => params[:query]}, :html => { :id => "repo_document_form", :multipart => true, :target => 'upload_frame'}) do |form|
这是控制器:
if !params[:stands]
respond_to do |format|
format.js do
responds_to_parent do
render :update do |page|
page.show "flash-error"
page.replace_html "flash-error","Please select stands you want to grant permission to view this stand."
end
end
end
return
end
end
我做错了什么?
答案 0 :(得分:2)
js.rjs救援
def action
@true = params[:stands]
respond_to |format|
format.js
end
end
in action.js.rjs:
if @true
# do true stuff
else
page.replace_html 'error_block_dom_id', :text => 'This is my error'
end
以及您从以下位置进行ajax调用的原始视图文件:
#nothing here due to no errors - errors will appear if they happen
<div id="error_block_dom_id"></div>
使用闪存没有首要原因 - 只需使用错误内容更新DOM对象。
答案 1 :(得分:0)
一种可能的解决方案是向控制器中的操作发送ajax调用,并在该操作中设置Flash消息
答案 2 :(得分:0)
Flash只会在下次加载页面时显示。它不会通过AJAX更新。 AJAX的一个注意事项是它不处理文件上传......
有关详细信息,请参阅此处; http://guides.rubyonrails.org/form_helpers.html#uploading-files
答案 3 :(得分:0)
我认为问题可能出在其他地方:元素的方法显示(当您调用 page.show时出现调用“flash-error”)将不会删除< strong> display:none 在外部Css文件中给出的css样式。这是Prototype的API文档旧版本的引用。
因此,请尝试将 display:none 添加为您div的内联样式。我希望它会有所帮助!