Как я могу отобразить ошибку для AJAX в рельсах - PullRequest
0 голосов
/ 31 августа 2009

Я пытаюсь отобразить сообщение об ошибке flash в Ajax с использованием Rails, но оно не отображается, и я попробовал несколько способов сделать это, но я просто не могу понять это правильно.

Вот моя форма для отображения моих ошибок:

#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 ]

2 голосов
/ 02 сентября 2009

js.rjs на помощь

def action
  @true = params[:stands]
  respond_to |format|
    format.js
  end
end

в действии. 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 с содержанием ошибки.

0 голосов
/ 02 сентября 2009

Я думаю, что проблема может быть в другом месте: метод элемента show (вызов которого генерируется при вызове page.show "flash-error" ) не удалит display: none стиль css, если он указан во внешнем файле Css. Это цитата из старой версии документации API прототипа.

Поэтому попробуйте добавить display: none в качестве встроенного стиля вашего Div. Я надеюсь, что это поможет!

0 голосов
/ 02 сентября 2009

Flash будет отображаться только при следующей загрузке страницы. Он не обновляется через AJAX. Одним из предостережений AJAX является то, что он не связан с загрузкой файлов ...

Смотрите это для более подробной информации; http://guides.rubyonrails.org/form_helpers.html#uploading-files

0 голосов
/ 31 августа 2009

Возможным решением будет отправить ajax-вызов к действию в контроллере и установить ваши флэш-сообщения в этом действии

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...