2010-12-02 3 views
0

私は、ユーザーが自分のワークアウトを追跡できるようにするために、RubyアプリケーションでRubyを構築しました。ユーザーはたくさんのトレーニングをしています。さらに、ユーザーは、ジムの所有者である場合、ボックス(ジム)を作成することができます。ユーザーは、メンバーシップリソースを通じてそのボックスに関連付けることができます。関連するレコードをremote_formで削除する

私は/views/boxes/show.html.erbでリモートフォームでCURRENT_USERのためにその関連付けを作成します。

<% remote_form_for Membership.new do |f| %> 
    <%= f.hidden_field :box_id, :value => @box.id %> 
    <%= f.hidden_field :user_id, :value => current_user.id %> 
    <%= submit_tag "I am a member of this box" , :class => '' %> 
<% end %> 

私は今CURRENT_USERに彼らの関連付けを除去する能力を与えたいです。リンク/フォームをどのように構造化し、メンバーシップコントローラーはアクションを破壊する必要がありますか?

以下

それは場合に役立ちます私の団体のリストです: ユーザー

class User < ActiveRecord::Base 
    has_many :boxes 
    has_many :workouts, :dependent => :destroy 
end 

ワークアウト

class Workout < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :box 
end 

ボックス

class Box < ActiveRecord::Base 
    belongs_to :user 
    has_many :users, :through => :memberships 
    has_many :workouts, :through => :users 
    has_many :memberships 
end 

会員

class Membership < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :box 
end 

答えて

0

あなたがhereを提案し、次のコードを使用してCURRENT_USERとボックスのメンバーシップを取得していると仮定して、変更を行った後、

@membership = current_user.memberships.for_box(box).first 

はとしてメンバーシップを削除するには、ユーザーのためのリンクを作成続く。

link_to 'Delete Membership', membership_path(@membership), :method => :delete 

メンバーシップコントローラには、次のようなdestroyメソッドが必要です。

def destroy 
    @membership = Membership.find(params[:id]) 
    @membership.destroy 
end 

これは、あなたのメンバーシップコントローラが安らかであると仮定して、あなたのルートでmap.resources :membershipsを持っています。

+0

フォームの詳細を教えていただけますか?私は単純に '<%remote_form_for Membership.new do | f | %> '〜<%remote_form_for Membership.destroy do | f | %> 'しかし、引数の数が間違っています。 – bgadoci

+0

いいえ私は、複数のメンバーシップ期間を持つことができないという妥当性確認があります。なぜ聞くのですか? – bgadoci

+0

ここにエラーがありました: 'IDなしで箱を見つけることができませんでした.' – bgadoci

関連する問題