非表示フィールドを持つユーザーを作成するための Rails フォームがあります。
= hidden_field_tag "user[site_ids][]", @current_site.id, :data => @current_site.id, :class => 'current_site_id'
current_site の site_id を設定します。
また、すべてのサイトがリストされているいくつかのチェックボックスもあります。
- Site.all.each do |site|
%label.checkbox
= check_box_tag 'user[site_ids][]', site.id, false, :class => "sites_checkbox"
= site.name
非表示フィールドがある理由は、ユーザーが少なくとも設定するチェックボックスを選択しない場合、si です@current_site
。
私は次のようにJQueryを使用することを考えていました:ユーザーがチェックボックスの1つを選択した場合、データベースにない値を999に設定します:
$(".roles_selected").click(function() {
var selected = $(this).closest("label");
if (selected.attr("data") == 'superadmin') {
$('.current_site_id').val(999);
} else {
$('.current_site_id').val($('.current_site_id').attr('data'));
}
});
コントローラーでは、999を削除する可能性がありますparams[:user][:site_ids]
それはとてもハックに思えます...他のアイデアはありますか?