Javascript:在javascript代码中使用模型中的方法

我正在尝试在资产上设置用户,我max_users的问题是不确定如何将我的max_users方法从asset.rb给我的JS代码。 我试图使用带有Cocoon gem的max_users方法让“Add Another”按钮在达到该资产允许的指定max_users时消失。

硬件将始终设置为max_user为1,而软件永远不会有max_user值。

Max_users和profile_type一样工作。 JS工作原样,但不是总是停在1,我需要让它在max_users中注册值,并将show / hide作为基础。

任何帮助都感激不尽。 并提前谢谢你。

JS:

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

Asset.show:

 - if @asset.users.empty? = simple_form_for([@asset_profile, @asset]) do |f| = f.input :max_users, as: :hidden #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_user_fields:

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

Asset.rb:

 def max_users if self.asset_profile.profile_type == "Hardware" 1 end end . . . def length_of_users if user_ids.count > max_users errors.add(:users, "You can only add a maximum of #{max_users} users") end end 

必须检索max_users的值,并将其转换为整数。 然后只需将其插入即可,如果显示的字段数量大于或等于max_users,则表单将停止生成新字段。

 $ -> check_to_hide_add_link = -> max_users = parseInt($("#asset_max_users").val(), 10) if $("#assets_users .nested-fields").length >= max_users $("#assets_users .links a").hide() else $("#assets_users .links a").show() $("#assets_users").bind "cocoon:after-insert", -> check_to_hide_add_link() $("#assets_users").bind "cocoon:after-remove", -> check_to_hide_add_link() check_to_hide_add_link()