Cocoon gem: Как ограничить количество ассоциаций

Я пытаюсь использовать гем Cocoon для добавления пользователей в актив. Единственная проблема заключается в том, что мне нужно настроить его для ограничения количества пользовательских ассоциаций, которые могут быть применены к активу, в зависимости от типа актива, которым они являются (аппаратное/программное обеспечение, с аппаратным обеспечением 1, программное обеспечение не будет определено ). На данный момент я могу просто продолжать добавлять ассоциации пользователей к активу. Есть ли способ ограничить количество ассоциаций?

Любая помощь приветствуется. Заранее спасибо.

Актив.шоу:

- if @asset.users.empty?
      = simple_form_for([@asset_profile, @asset]) do |f|
        #assets_users
          = f.simple_fields_for :assets_users do |assets_user|
            = render "assets_user_fields", :f => assets_user
          .links
            = link_to_add_association "Add Another User", f, :assets_users
          = f.submit

_assets_users_fields.html.haml:

.nested-fields
  = f.input :user_id, collection: @users.order(:last_name), :label => "User"
  = link_to_remove_association "Remove", f

Я попробовал решение, которое я видел, по другому вопросу, но я получаю сообщение об ошибке Uncaught TypeError: number is not a function в if $("#assets_users .nested-fields").length() is 1.

Я пробовал javascript:

$ ->
  check_to_hide_add_link = ->
    if $("#assets_users .nested-fields").length() is 1
      $("#assets_users .links a").hide()
    else
      $("#assets_users .links a").show()
    return
  $("#assets_users").bind "cocoon:after-insert", ->
    check_to_hide_add_link()
    return

  $("#assets_users").bind "cocoon:after-remove", ->
    check_to_hide_add_link()
    return

  check_to_hide_add_link()
  return

Еще раз, любая помощь очень ценится.

РЕДАКТИРОВАТЬ: Ссылка на указанный вопрос: Кокон добавить ассоциацию, как ограничить количество ассоциаций

Сгенерированный javascript:

$(function() {
  var check_to_hide_add_link;
  check_to_hide_add_link = function() {
    if ($("#assets_users .nested-fields").length() === 1) {
      return $("#assets_users .links a").hide();
    } else {
      return $("#assets_users .links a").show();
    }
  };
  $("#assets_users").bind("cocoon:after-insert", function() {
    return check_to_hide_add_link();
  });
  $("#assets_users").bind("cocoon:after-remove", function() {
    return check_to_hide_add_link();
  });
  return check_to_hide_add_link();
});

person Briknthewall    schedule 03.11.2014    source источник
comment
Вы не ссылаетесь на вопрос, в котором нашли ответ (мой ответ кстати), но, на самом деле, ваша проблема в переводе coffeescript. Можете ли вы показать нам сгенерированный javascript?   -  person nathanvda    schedule 04.11.2014
comment
Я прошу прощения за это. Ссылка добавлена, а также сгенерированный javascript.   -  person Briknthewall    schedule 04.11.2014


Ответы (1)


Избавление от () на .length оказалось решением для сообщения об ошибке. Просто проблема с моим преобразованием javascript в coffeescript.

Вот ссылка на новый вопрос, который я открыл для дальнейшего изучения моей конкретной проблемы, если у кого-то есть такая же: Javascript: использование метода из модели в коде javascript

person Briknthewall    schedule 04.11.2014