我有一个用于创建具有隐藏字段的用户的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
如果用户没有选择任何至少会设置@current_site
的复选框,我有隐藏字段的原因是。
我正在考虑使用这样的JQuery:如果用户选择其中一个复选框,我将值设置为999,而不是在db中:
$(".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'));
}
});
并且在控制器中可以从params[:user][:site_ids]
这看起来如此苛刻......还有其他想法吗?
答案 0 :(得分:5)
更直接的解决方案是在控制器的create / update方法中设置默认站点。例如,像:
@user = User.new(params[:user])
@user.sites << @current_site if params[:user][:site_ids].empty?
然后你可以摆脱你的形式和jquery中的隐藏字段。