I have attached an image file with this port. Here, Currently I am
sorting (order) users depending on email id. I would like to sort the
users depending on checkbox status so that selected (checked) users will
be listed first and then other emails will be listed in the order of
email.
<% User.all( :order => :email, :conditions => ( @current_user.excelfore?
? : ["role != 'excelfore'"] ) ).each_with_index do |u,i| %>
<tr<%= ' class="even_row"' if i.even? %>>
<td class="checkbox">
<input id="checkbox_<%= i %>" type="checkbox" <%=
'checked="checked"' if @group.users.include?( u ) %> onchange="if (
this.checked ) {
<%= remote_function( :url => { :action => :add_user, :id =>
@group.id, :user => u.id },
:before => "checkbox_onchange_before(
#{ i } )",
:success => "checkbox_onchange_success(
#{ i }, 'user added' )",
:failure => "checkbox_onchange_failure(
#{ i }, 'add user' )",
:complete =>
"checkbox_onchange_complete( #{ i } )" ) %>;
} else {
<%= remote_function( :url => { :action => :remove_user, :id
=> @group.id, :user => u.id },
:before => "checkbox_onchange_before(
#{ i } )",
:success => "checkbox_onchange_success(
#{ i }, 'user removed' )",
:failure => "checkbox_onchange_failure(
#{ i }, 'remove user' )",
:complete =>
"checkbox_onchange_complete( #{ i } )" ) %>;
}" />
</td>
<td><span class="checkbox_label" onclick="checkbox_click( <%= i %>
)"><%= u.email %></span></td>
<td>
<% if u.name.present? %>
<span class="checkbox_info" onclick="checkbox_click( <%= i %>
)"><%= u.name %></span>
<% end %>
</td>
<td id="status_<%= i %>" class="checkbox_status"></td>
</tr>
<% end %>
The first step is to get that finder out of the view, and move it into
the User model. Then you can call it on the @current_user instance and
do all of your sorting and shuffling in one place:
Class User < AR::Base
def accessible_users
return unless role == "excelfore"
User.all( :order => :email, :conditions => ( ["role !=
'excelfore'"] ) ).sort_by { |u| u.receiving_group_email? }
end
def receiving_group_email?
# some calculation here that returns whether or not users are at
the top of the list - or even better, move it into the conditions of
the finder...
end
end
# in the view
<% @current_user.accessible_users.each_with_index do |u,i| %> .... etc
Currently I am
sorting (order) users depending on email id. I would like to sort the
users depending on checkbox status so that selected (checked) users will
be listed first and then other emails will be listed in the order of
email.
The first step is to get that finder out of the view, and move it into
the User model. Then you can call it on the @current_user instance and
do all of your sorting and shuffling in one place:
Class User < AR::Base
def accessible_users
return unless role == "excelfore"
User.all( :order => :email, :conditions => ( ["role !=
'excelfore'"] ) ).sort_by { |u| u.receiving_group_email? }
end
def receiving_group_email?
# some calculation here that returns whether or not users are at
the top of the list - or even better, move it into the conditions of
the finder...
end
end
# in the view
<% @current_user.accessible_users.each_with_index do |u,i| %> .... etc
Hi Michael,
Thanks for your reply...
Can I do it by using sorttable.js ? I have included table headers,
sorttable.js. And also I have changed the table class to
class="sortable". But it is not working.