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
Post a Comment