2011-12-27 9 views
0

私はUsersShiftsという2つのモデルを持っています。レールは異なるモデルのためにデータを渡す

  • Users:ID、名前
  • Shifts:USER_ID、TIME_LENGTH

Userにhas_many ShiftsShift belongs_to User。かなりシンプル。私が何をしたいか

は新しいShiftコントローラビュー(/shifts/new)にリンクして私のshowユーザーコントローラ(/users/1)上のボタンを追加することです。私はuser.idを送信して、私のUsersモデルからの情報をフォームにあらかじめ入力したいので、ボタンでこれを行うことができました。

私は罰金リンクされて、次のコードを、使用していますが、あなたがそうのような第二引数に追加のパラメータを渡すことができますuser.id詳細

button_to "Create Shift", {:controller => "shifts", :action => "new"},{ :method => "get"} 

答えて

0

を渡す方法うまくいかないことができます。

button_to "Create Shift", { :controller => "shifts", :action => "new", :user_id => user.id }, { :method => "get" } 

これは/shifts/new?user_id=5のようなURLを生成する必要があります。

0

あなたはNested resourcesを使用することができます。

routes.rbを書き込みで:

map.resources :users do |users| 
    users.resources :shifts 
end 

次に、新しいシフトフォームのパスがnew_user_shift_path = /users/:id/shift/new

そして、あなたが得ることができるshifts_controllerになりますこのようなユーザー:

@user = User.find(params[:user_id]) 

これを隠しタグフィールドとしてフォームに入れます。 (またはそれは必要ではありません - 私は正確にはわかりません)

関連する問題