In my application, I have 3 models:
class Person
has_many :groups
has_many :group_memberships, :foreign_key => "member_id"
end
class Group_Membership
belongs_to :member, :class_name => 'Person'
belongs_to :group
end
class Group
belongs_to :person
has_many :group_memberships
has_many :members, :class_name => "Person", :through => "group_memberships", :foreign_key => "member_id"
I need to create a button on the group’s page # #, which allows the Person to request group_definition. As suggested by the previous question, I did def create_membershipon my Group_Membership controller:
def create_membership
@group = Group.find params[:id]
if @group.group_memberships.create( :member_id => params[:member_id])
redirect_to @group
else
render :action => 'show'
end
end
So, I went to my form, in the group view # show, and I did the following:
<%= form_for :group_membership, @group_membership, :url => { :action => "create_membership" } do |f| %>
<%= submit_tag "Create" %>
<% end %>
But every time I click the button, it redirects me to the form to create a new group, not Group_Membership. Any hints? Thanks in advance.
######## EDIT ###########
Ok, I somehow changed my code to something like this:
def create
@person = Person.find(current_person)
@group = Group.find(params[:group_id])
params[:group_membership] = {:member_id => @person.id, :group_id => @group.id}
@group_membership = Group_Membership.create(params[:group_membership])
if @group_membership.save
redirect_to @person
else
redirect_to @person
end
end
And my form right now is this:
<% form_for(:group_membership, :url => group_memberships_path(:member_id => current_person, :group_id => @group.id)) do |f| %>
<%= submit_tag "Join!" %>
Now I can create a group_membership model, but both identifiers are added empty in the database column member_idand group_id.
@group_membership = Group_Membership.create(params[:group_membership]) @group_membership = Group.Group_Membership.create(params[:group_membership]), . , Person..