2012-04-02 24 views
0

多くのドキュメントを読んだことがありますが、なんらかの理由でこれはまだわかりません。rails 3:HABTM関係にコントローラが必要な明確化

ユーザーとイベントの両方でHABTMリレーションシップによって定義されたEvents_Usersというユーザーテーブル、イベントテーブル、およびM2Mテーブルがあります。ユーザーがEvent IndexまたはShowページでイベントにサインアップすると、Events_Users用に作成されたコントローラのNewアクションに移動する必要がありますか?その場合は、Createアクションにパラメータを渡すだけの新しいアクションに進む必要がありますか?それとも、Createアクションに直接進むべきですか?

ベストプラクティスについての明確な説明があれば幸いです。

私は、ネストされたリソースとしてユーザーをこのように持っているイベントを受け入れる:

class Event < ActiveRecord::Base 
    has_many :users 
    accepts_nested_attributes_for :events 
end 

この私はそれを行うための一つの方法は、以下のことができることを考える

おかげ

答えて

0

次のようにEventsController内でカスタムアクションを定義できます。

class ApplicationController < ActionController::Base 
    def add_user_to_event 
    @event = Event.find(params[:event]) 
    @user = User.find(params[:user]) 
    @event.users << @user 
    @event.save 
    end 
end 

あなたのフォームには、現在のイベントとユーザーをパラメータとしてlink_toこのアクションがあります。

+0

返信いただきありがとうございますので、この機能をEventsControllerに追加すると、別のオブジェクトから参照する必要がありますか?どのように私はUsersControllerの代わりにEventsControllerに配置することにしますか?またはユニークなコントローラEventsUsersController?私が混乱しているところ – turbo2oh

+0

このアクションをユーザコントローラで定義すると、/ events/add_user_to_eventという名前のルートしか定義されません。あなたはどこからでもこのルートを呼び出すことができます。 あなたが言及している選択肢は単なる問題です:ユーザービューまたはイベントビューからイベントを追加していますか?それはあなた次第です。あなたは、逆を行うUsersControllerの下に別のアクション呼び出しadd_event_to_userを定義することさえできます。 – bruno077

+0

本当にこのようなことはベストプラクティスですか?私はそれがたくさん来なければならないように感じる。 – turbo2oh

関連する問題