0

アプリの画面上部にカウンターとして使用される 3 つのフィールドを追加したいと考えています。次のコードは実際には機能しますが、ページを編集モードにして [保存] ボタンをクリックすると、3 つのカウンター フィールドが消え、ブラウザーを更新するまでそのままになります。私は Haml の初心者であり、そこには多くのドキュメントがなく、そこにあるものはほとんど役に立ちませんでした。

問題のページをレンダリングするための関連する Haml コードは次のとおりです。

- form_for [@application, @item_collection], :html => { 'data-remote' => 'json', :id => 'edit_item_collection', :class => 'show_progress inline_edit' } do |f|
  = render 'edit_fields', :f => f
  .submit.editing_only
    %button.default_action{ :type => 'submit',:id => 'Save'} Save`

実際のページの Haml コードは次のとおりです。

.field.large
  = f.label      :name, nil, 'data-help-id' => 'page_name'
  = f.text_field :name, disabled_if_unauthorized(@item_collection, :maxlength => 255, :title => "Edit Page")
  = f.error_message_on(:name, :css_class => 'error_message')
.field
  = f.label      :path, nil, 'data-help-id' => 'page_path'
  = f.text_field :path, disabled_if_unauthorized(@item_collection, { :maxlength => 255, :class => 'extra_margin', :title => "Edit Page" })
  = f.error_message_on(:path, :css_class => 'error_message')
.field.info
  = f.label      'Info'
  %ul.elements_count
    %li.elements_in_use{ :id => 'elements_in_use' }
    %li.unused_elements{ :id => 'unused_elements'}
    %li.undefined_elements{ :id => 'undefined_elements'}

[保存] をクリックすると、elements_count 順不同リストが消えます (ただし、ブラウザーを更新すると再び表示されます)。問題は、「= f」を入力する必要があることです。これらの要素の前にありますが、リストに対してそれを行う方法がわかりません。

li 要素を設定するための JavaScript は次のとおりです。

function getElementCount() {
  var usage_element_total = $('.usage').size();
  var unused_element_total = $('.unused').size();
  var undefined_element_total = $('.undefined').size();
  $('#elements_in_use').html(usage_element_total + " Elements in use,");
  if (unused_element_total < 1) {
    $('#unused_elements').html(" 0 unused Elements,");
  } else {
    $('#unused_elements').html((unused_element_total-1) + " unused Elements,"); 
  }
  $('#undefined_elements').html(undefined_element_total + " undefined Elements");
}

どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

0

フォームが更新されるたびに、要素数を設定する Javascript をトリガーする必要があります。おそらくgetElementCount、ページの読み込み時に呼び出していると思われますが、フォームがレンダリングされたときにトリガーできます。

$("form").bind("ajax:complete", getElementCount);

しかし、物事がどのように配線されているかについては少し推測していますが、それはあなたの状況ではうまくいかないかもしれません.

于 2012-10-17T18:01:26.233 に答える