メンバーフォーム(new.html.erb)に入力した名前に基づいてユーザーのメンバーシップを作成しようとすると問題が発生します。ユーザーとグループ間の結合アクションを正しく作成する
user.rb
has_many :memberships, :dependent => :destroy
has_many :groups, :through => :memberships
membership.rb
class Membership < ActiveRecord::Base
attr_accessible :user_id, :group_id
belongs_to :user
belongs_to :group
end
group.rb
has_many :memberships, :dependent => :destroy
has_many :users, :through => :memberships
会員コントローラ
def create
@group = Group.find_by_name(:group)
@membership = current_user.memberships.build(:group_id => @group.group_id)
if @membership.save
flash[:notice] = "You have joined this group."
redirect_to :back
else
flash[:error] = "Unable to join."
redirect_to :back
end
end
会員 - _form.html.erb
<%= form_for(@membership) do |f| %>
...
#error validation
...
<div class="field">
<%= f.label :group %><br />
<%= f.text_field :group %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
私はそれがやりたいことは、それが存在する場合は、入力されたグループを見つけ、そしてメンバーシップのテーブルエントリを作成していますそれに応じてテーブル。私がやっていることが正しい方向にあるかどうかは分かりません。助言がありますか?
あなたが持っているコードを使用して何が悪いですか?ログにエラーはありますか? – Brandan
グループテーブルからgroup_idが見つかりません。私に "undefined method' group_id 'for nil:NilClass "というエラーを出す。私はそれがフォームまたはコントローラで問題があるかどうか分かりません – Norto23