2011-12-27 6 views
0

두 모델 UsersShifts이 있습니다.레일은 다른 모델의 데이터를 전달합니다

  • Users : ID, 이름
  • Shifts : USER_ID, TIME_LENGTH

User has_many Shifts; Shift belongs_to User. 아주 간단합니다. 내가 원하는 무엇

새로운 Shift 컨트롤러보기 (/shifts/new)에 링크 내 show 사용자 컨트롤러 (/users/1)에 버튼을 추가합니다. 저는 user.id에있는 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]) 

그런 다음 폼에 숨겨진 태그 필드로 넣습니다. (또는 그것이 필요하지 않습니다 - 정확하게 모르겠습니다)

관련 문제