Как использовать Scriptaculous эффекты на сообщения об ошибках - PullRequest
1 голос
/ 13 ноября 2009

Я хочу использовать некоторые скриптовые эффекты для сообщений об ошибках.

<% form_for(@page) do |f| %>
    <%= f.label :name %>
    <%= f.text_field :name %>
    <%= f.error_message_on "name" %>

    <%= f.label :content %>
    <%= f.text_field :content %>
    <%= f.error_message_on "content" %>

    <%= f.submit 'Create' %>
<% end %>

Моя первая идея - поместить сообщения об ошибках в теги div и использовать page.visual_effect в контроллере. Но я не знаю, как правильно выбрать div, которые будут затронуты.

<% form_for(@page) do |f| %>
    <%= f.label :name %>
    <%= f.text_field :name %>
    <div id="errorname"><%= f.error_message_on "name" %></div>

    <%= f.label :content %>
    <%= f.text_field :content %>
    <div id="errorcontent"><%= f.error_message_on "content" %></div>

    <%= f.submit 'Create' %>
<% end %>

Или я должен поставить некоторые условия в поле зрения и вызвать их оттуда. Кстати, я не знаю, как это сделать. Разве мы не можем сделать что-то вроде f.error_message_on "name", :visual_effect => ... Любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 13 ноября 2009

Вы находитесь на правильном пути с переносом в div, но вы можете сделать это следующим образом:

<%= f.error_message_on "name",
      :css_class => "inputError" %>

Вероятно, есть много способов сделать это. Наличие возврата контроллера RJS является одним из способов. Чтобы быть ненавязчивым, считается оптимальной практикой, вам нужно будет включить файл javascript, который запускает метод scriptaculous при загрузке страницы. Я использую низкопрофильную библиотеку для ненавязчивого JavaScript. Вот мое предложение:

файл макета:

<%= javascript_include_tag :defaults, ‘lowpro’, 'form_behaviors.js' %>

javascript_file_for_form_actions.js:

Event.addBehavior({ 
  '.inputError' : function() {
    this.hide();
    this.blindUp();
  }
});

Вы также можете условно загрузить файл javascript с помощью content_for и изменить файл макета.

Просмотр файла:

<% content_for(:javascript) do %> <%= javascript_include_tag “form_behaviors” %>
<% end %>

Где-то в файле макета:

<% yield :javascript %>

Вы можете получить ненавязчивый плагин , который также включает lowpro для вас. Для получения дополнительной информации Peepcode содержит хороший pdf о lowpro, а также несколько хороших скринкастов на javascript.

0 голосов
/ 13 ноября 2009

Просто поместите ваше сообщение об ошибке в идентифицируемый элемент, такой как:

<div id="bob">error messages here</div>

Тогда в вашем javascript вы можете сделать что-то вроде:

$('bob').blindUp();
...