尝试将用户的电子邮件地址发布到rails中的成员资格表

时间:2013-07-07 01:38:44

标签: ruby-on-rails

https://github.com/jtrinker/highlands

我正在构建一个允许用户登录并加入群组的应用。当他们点击一个组然后点击“加入”时,我希望将用户的电子邮件地址发布到成员资格表,并保存已加入该组的用户。

我有一个用户,组和成员资格模型。一旦我添加了会员桌,事情变得有点毛茸茸。

型号:

class Membership < ActiveRecord::Base
  belongs_to :user
  belongs_to :group
  attr_accessible :user_email
end

class User < ActiveRecord::Base
  belongs_to :group
  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable,
  # :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :username, :password, :password_confirmation, :remember_me
end

class Group < ActiveRecord::Base
  has_many :memberships
  has_many :users, :through => :memberships
  attr_accessible :description, :location, :name
end

组#显示:

<h1><%= @group.name %></h1>
<h4><%= @group.location %></h4>
<p><%= @group.description %></p>
<%= link_to "Join +", memberships_path(:user_email => user.email), :method => :post %>

我不确定如何让用户成为某个群组的成员。

我的所有代码都在github上发布 - https://github.com/jtrinker/highlands

谢谢!

1 个答案:

答案 0 :(得分:1)

我看到你正在发送:向群组发帖请求#通过link_to创建动作,但你可以采取另一种方式:

在成员资格控制器中创建:加入操作

def join
# some code here
end

添加到代码

之后的路线
resources :membership do
  get :join, via: :get
end

它显示返回路线,如:

membership_join GET /membership/:membership_id/join(.:format) membership#join

比使用membership_id加入行动的视图链接

<%= link_to "Join +", membership_join_path(:membership_id => @group.id) %>