2010-11-23 8 views
2

ちょっと、私はスポーツイベントの登録を処理するアプリを書いています。これらのイベントの中には、エントリーごとに複数のアスリートを持つものもあれば、アスリートが1人しかいないものもあります。私は現在、そのようなBoatsControllerのNEWアクションに選手を送っています:Rails、NEWからCREATEへリダイレクト

<%= link_to 'Register', new_event_boat_path(@event) %> 

私の質問は、新しいアクションは、イベントが唯一のボートごとに、ユーザが必要であることを見れば、どのように私は直接ユーザーに転送することができ、ありますCREATEアクション?より簡潔に、アクション内からPOSTを生成するにはどうしたらいいですか?

答えて

-1
def new 
    #assuming boats is an array 
    if boats.size > 1 
     redirect_to boats_path(:user => params[:user], :boat => params[:boat]), :method => :post 
    else 
     #new stuff 
    end 
end 

boats_pathまたは作成しようとしているすべてのオブジェクト。

+0

クール、これは私がする必要がある私を得る。 –

+0

私はあなたが知っていると確信しているように、あなたは将来どのようにあなたが物事を行うべきではないが、それがうまくいくことを願っています。 – s84

1

代わりに、createアクションのほとんどのコードをカプセル化し、create(通常はparams)と特殊なケースから新しい(ユーザーオブジェクトからデータを送信する)メソッドを呼び出すことができます。

4

何もする必要はありません。作成アクションは、コントローラ内の単なるメソッドです。あなたは、他の方法のようにそれを呼び出すことができます。

def new 
    if event_only_requires_one_user_per_boat 
     create 
    else 
     #display new form 
    end 
end 

また、この技術は、それがユーザーのリダイレクトを行わないため、複数のリクエストを行う必要からユーザーを防ぐことができます。