如何在rails中显示ajax的错误

时间:2009-08-31 12:05:14

标签: ruby-on-rails ajax

我正在尝试使用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

我做错了什么?

4 个答案:

答案 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的内联样式。我希望它会有所帮助!