ruby on rails - New Route link_to working in one place but not in another -


i've created new action in controller, groups_controller.rb

def add_member  @group = group.find(params[:id])  @user = user.find(params[:user])  @group.add_member(@user)  redirect_to :back end 

and in group.rb, add_member defined as:

def add_member(user)  self.working_groups.build(:user_id => user.id, :position => self.users.count, :role => 'member')  self.save end 

i've created corresponding route:

resources :groups  member   'add_member'  end end 

so when rake routes, get:

add_member_group    /groups/:id/add_member(.:format) groups#add_member 

so, works when use on show template

<%= link_to "join", add_member_group_path(:user =>current_user.id, :group=> invitation.group.id) , :class => 'btn-primary' %> 

but when trying use same link in index template, routing error:

actioncontroller::routingerror @ /groups no route matches {:action=>"add_member", :controller=>"groups", :user=>1, :group=>12} 

any idea of missing here? tried answer here, didn't make trick.

thanks

your route needs id parameter , don't provide one. provide user , group.

in show view, have id in params reused.

in index view not have id rails says can't find route, because misses id.

you should write link this:

<%= link_to "join", add_member_group_path(:user =>current_user.id, :id=> invitation.group.id) , :class => 'btn-primary' %> 

or this:

<%= link_to "join", add_member_group_path(invitation.group, :user =>current_user.id) , :class => 'btn-primary' %> 

Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

qt - Errors in generated MOC files for QT5 from cmake -