kaeptnhaddock
2007-Dec-31 11:41 UTC
habtm user interface; unexpected behaviour (calling update instead of method?)
I''m trying to get a user-interface going, where the user can choose which users he/she would like to add to a group. edit.html.erb for the Group displays a list of users currently assigned to the group we''re editing, as well as a list of users not assigned to this group yet. On both lists there are buttons to assign a user to the group resp. to remove the user from the group. (see code below). This works. Almost. There are some unexpected behaviours that puzzle me: - the topmost row on both lists cannot be moved to the other list. When clicking the ''>'' or ''<'' button next to the topmost-listelement the application executes an "update" command instead of adding or removing the user via the action => command that is assigned to the button. (when I sort the users according to id intead of names, it is still the top-row that can''t be moved with the buttons; it must have something to do with the position, I think) - the update-button as well as the "show" and "back" links are being displayed at the very top, even though, in the code they follow after the lists... an indication that I''m doing something fundementally wrong, it seems to me. can you get me back on track? Any comments and improvements are very welcome! thank you for your time haddock ps I''m planning to use partials later on, but for the moment I would like to get this working first ---------------------------------------------------------views/groups/ edit.html.erb <h1>Editing group</h1> <%= error_messages_for :group %> <% form_for(@group) do |f| %> <p> <b>Name</b><br /> <%= f.text_field :name %> </p> <p> <table> <tr> <th>Users of this group</th> <th></th> </tr> <% for user in @users_of_group %> <tr> <td><%= button_to ''>'', :action => :remove_user_from_group, :user_id => user.id, :group_id => @group.id %></td> <td><%=h user.id %></td> <td><%=h user.name %></td> </tr> <% end %> <table> <tr> <th>Users available</th> <th></th> </tr> <% for user in @users_not_of_group %> <tr> <td><%= button_to ''<'', :action => :add_user_to_group, :user_id => user.id, :group_id => @group.id %></td> <td><%=h user.id %></td> <td><%=h user.name %></td> </tr> <% end %> </p> <p> <%= f.submit "Update" %> </p> <% end %> <%= link_to ''Show'', @group %> | <%= link_to ''Back'', groups_path %> ---------------------------------------------------------excerpt from groups_controller.rb # GET /groups/1/edit def edit @group = Group.find(params[:id]) @users_of_group = @group.users.find(:all, :order => "name") @users_not_of_group = User.find_by_sql(["select * from users where id not in (select user_id from groups_users where group_id = ?) order by name", params[:id]]) end def add_user_to_group @user = User.find(params[:user_id]) @group = Group.find(params[:group_id]) @group.users << @user redirect_to :action => :index end def remove_user_from_group @user = User.find(params[:user_id]) @group = Group.find(params[:group_id]) @group.users.delete(@user) redirect_to :action => :index end --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Greg Donald
2007-Dec-31 20:47 UTC
Re: habtm user interface; unexpected behaviour (calling update instead of method?)
On 12/31/07, kaeptnhaddock <kaeptn.haddock-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > I''m trying to get a user-interface going, where the user can choose > which users he/she would like to add to a group. edit.html.erb for the > Group displays a list of users currently assigned to the group we''re > editing, as well as a list of users not assigned to this group yet. On > both lists there are buttons to assign a user to the group resp. to > remove the user from the group. (see code below). > > This works. Almost. There are some unexpected behaviours that puzzle > me: > > - the topmost row on both lists cannot be moved to the other list. > When clicking the ''>'' or ''<'' button next to the topmost-listelement > the application executes an "update" command instead of adding or > removing the user via the action => command that is assigned to the > button. (when I sort the users according to id intead of names, it is > still the top-row that can''t be moved with the buttons; it must have > something to do with the position, I think) > > - the update-button as well as the "show" and "back" links are being > displayed at the very top, even though, in the code they follow after > the lists... an indication that I''m doing something fundementally > wrong, it seems to me.I had a similar problem where things were working fine in everything but IE. It was solved by adding <tbody> tags into my tables. Not sure if that''s your problem but I thought I''d mention it. -- Greg Donald http://destiney.com/ --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
kaeptnhaddock
2008-Jan-02 20:09 UTC
Re: habtm user interface; unexpected behaviour (calling update instead of method?)
Thanks for your comment. I did as you told plus I''ve cleaned the html a bit, there were some errors as well. The second point about the placement of the button/links is now working as expected! This still leaves the first issue.The fist element/user still wont remove itself from the list, if I press the arrow-button next to it. Instead the "update"method gets called. With other users/list-items it works just fine. Below the html code for the table, as well as the update-method. The update-method is a by-product from the scaffold command. Maybe to someone who understands it better than I it is obvious, why it is called when the top-button of the following table is pressed? ***---------- update method in controller def update @group = Group.find(params[:id]) respond_to do |format| if @group.update_attributes(params[:group]) flash[:notice] = ''Group was successfully updated.'' format.html { redirect_to(@group) } format.xml { head :ok } else format.html { render :action => "edit" } format.xml { render :xml => @group.errors, :status => :unprocessable_entity } end end end ***----------html-source of table <table> <thead> <tr> <th>Users of this group</th> <th></th> </tr> </thead> <tbody> <tr> <td><form method="post" action="/groups/remove_user_from_group? group_id=3&user_id=3" class="button-to"><div><input type="submit" value=">" /><input name="authenticity_token" type="hidden" value="339fe1a43ed7259223d4812901af2400909ab073" /></div></form></td> <td>3</td> <td>abcdefghij</td> </tr> <tr> <td><form method="post" action="/groups/remove_user_from_group? group_id=3&user_id=2" class="button-to"><div><input type="submit" value=">" /><input name="authenticity_token" type="hidden" value="339fe1a43ed7259223d4812901af2400909ab073" /></div></form></td> <td>2</td> <td>aeruoweuroweur</td> </tr> <tr> <td><form method="post" action="/groups/remove_user_from_group? group_id=3&user_id=1" class="button-to"><div><input type="submit" value=">" /><input name="authenticity_token" type="hidden" value="339fe1a43ed7259223d4812901af2400909ab073" /></div></form></td> <td>1</td> <td>chaljdfaf</td> </tr> </tbody> </table> --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
kaeptnhaddock
2008-Jan-06 11:33 UTC
Re: habtm user interface; unexpected behaviour (calling update instead of method?)
solved! I shouldn''t have put the <%= button_to ''> elements within another form. Nested forms are no good, it says so on page 476 in the bible (agile web development with rails). cheers --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---