1

エラー メッセージに Scriptaculous 効果を使用したいと考えています。

<% 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 %>

または、いくつかの if 条件を視野に入れて、そこから呼び出す必要があります。ちなみに私はその方法を知りません。私たちは何かをすることはできませんかf.error_message_on "name", :visual_effect => ...

4

2 に答える 2

1

あなたはdivでラップすることで正しい軌道に乗っていますが、ビューでは次のようにすることができます:

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

おそらく多くの方法があります。コントローラーが rjs を返すようにするのも 1 つの方法です。目立たないように、ベスト プラクティスと見なされるようにするには、ページが読み込まれたときに scriptaculous メソッドを起動する JavaScript ファイルを含める必要があります。目立たないjavascriptにはロープロライブラリを使用しています。これが私の提案です:

レイアウト ファイル:

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

javascript_file_for_form_actions.js:

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

content_for を使用して条件付きで JavaScript ファイルをロードし、レイアウト ファイルを変更することもできます。

ファイルを閲覧する:

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

レイアウトファイルのどこかに:

<% yield :javascript %>

ロープロを含む目立たないプラグインも入手できます. 詳細については、 Peepcodeにロープロに関する優れた PDF と、javascript に関する優れたスクリーンキャストがあります。

于 2009-11-13T16:13:45.750 に答える
0

次のような識別可能な要素にエラー メッセージを入力するだけです。

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

次に、JavaScriptで次のようなことができます:

$('bob').blindUp();
于 2009-11-13T15:22:18.713 に答える