2013-06-03 4 views
0

У меня возникла проблема с тем, как справиться с успехом в моей форме ввода, используя рельсы 3 ujs ajax.Rails 3 Удаленная форма Успех Ajax

Если есть ошибки, у меня есть create.js.erb, который будет alert(j(@entry.errors.full_messages), и это сработает. Но если ошибок нет, форма не перенаправляется (потому что я рендеринга в диалоговом окне), и я хотел бы, чтобы js предупреждал («успех») и закрывал диалог. (используя fancybox 2).

Можете ли вы дать мне несколько указателей, работающих с рельсами 3 ujs и ajax?

ответ

0

Подход заключается в том, чтобы идентифицировать и обрабатывать ошибку на уровне контроллера вместо просмотра.

def create 
    @entry = something 
    if @entry.save 
    @notice = "Success message!" 
    respond_to :js # render default create.js.erb 
    else 
    respond_to :js { render 'create_error.js.erb' } 
    end 
end 

// create.js.erb 
$("#dialog").close(); 
alert("<%= @notice %>">; 

// create_error.js.erb 
alert(j(@entry.errors.full_messages); 
+0

Лучше FancyBox близко '$ .fancybox.close()' :) –

+0

@KevinBrown, на самом деле я не знаю, метод вообще :) Это просто пример, чтобы показать различные действия на разные шаблон. –

+0

@KevinBrown, может быть, 'alert' - это ваш метод, вы можете использовать более дружественный метод, такой как' show() ',' fadeIn() 'и т. Д. Независимо от того, что они есть, в реальном случае лучше быть метод обратного вызова 'close()', который должен быть запущен после закрытия диалога. –

Смежные вопросы