2013-03-20 4 views
0

좋아, 내가 여기에 여기에 분명 뭔가 빠진하지만하고있어 간다 :등록 양식과 레일의 외부 키

는 내가 4 골

으로 user_goals 모델을 만들어 고안

와 사용자를 생성 사용자 테이블에 user_goal_id 필드를 만들었습니다.

내 사용자 등록 양식에서 네 가지 가능한 목표 중 collection_select을 제시하고 사용자 생성시 선택한 목표의 ID를 사용자 테이블에 입력하려고합니다.

어떻게해야하는지 알 수 없습니다. 특히, user_goals 선택한 ID를 users 테이블의 user_goal_id 필드에 쓰는 방법을 알 수 없습니다.

편집 :

나는 user_goals 컨트롤러를 만들 필요가, 아니면 그냥 users_controller에 컨트롤러 로직을 넣을 수 있습니까?

답변

1

정말 간단합니다. 컨트롤러 또는 모델에서 어떤 로직도 수행 할 필요가 없습니다. 당신은 방금 등록 양식에서 다음을 수행하십시오

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %> 

위의 라인은 단지 양식을 작성 form_for입니다. 비계, 또는이 경우, Devise가 이것을 만들 것입니다. 끝에 do |f|을 기억하십시오.

<%= devise_error_messages! %> 
    <%= f.label :Whats_your_goal? %><br /> 
    <%= f.collection_select :user_goal_id, UserGoals.all, :id, :name, { :include_blank => ""}%> 

첫번째 라인

필드

번째 라인 드롭 다운이며 단지 라벨이다. f.collection_select은 양식 생성기에 이것이 옵션 드롭 다운 목록이 될 것이라고 알려줍니다.

:user_goal_iduser_goals 표에서 목표의 foreign key을 기록하려는 사용자 테이블의 필드 이름입니다.

UserGoals.all은 드롭 다운 목록을 채우려는 데이터베이스 테이블의 이름입니다. .all 내가 :id, 자신의 데이터베이스 ID 번호 또는 프라이 머리 키를 기준으로 항목을 끌어 생각

해당 데이터베이스 테이블에서 모든 항목을 원하는 말한다, 그리고 :name는 설명을 반대하거나, 뭔가를 나에게 테이블의 이름 열을 제공 말한다 .

마지막으로 { :include_blank => "" }은 드롭 다운의 맨 위에 빈 공간을 생성하기 때문에 기본 선택 사항이 없습니다. 원하는 경우 "" 사이에 메시지를 넣을 수도 있습니다.

나는 이것에 대한 간단한 설명을 찾는 데 어려움을 겪었다. 희망을 갖고 다른 사람이 유용하다고 생각하기를 바랍니다.

1

정확한 질문을하시기 바랍니다. 너무 일반적입니다. 코드의 일부분을주고 정확한 것을 묻습니다. 당신이 요구하는 것을 정말로 이해하지 못한다면, 대답하려고하는 사람도 이해하지 못할 것입니다. 레일즈 가이드를 확인하고 ActiveRecord 릴레이션 (외래 키를 감싸는)에 대한 좋은 장이 있으며 튜토리얼을 수행하십시오. 어떻게 작동하는지 이해하면 오류 메시지 나 코드 조각에 대한 정확한 도움이 필요하다면 다시 돌아와서 질문하십시오. 확실한 답을 얻으실 수 있습니다 :)

+0

감사합니다. 실제로 이것은 제가 찾고자했던 것과 정확히 일치합니다. Active Record Association 기본 레일 가이드가 필요했습니다. – Arel

+2

바로 가기 : http://guides.rubyonrails.org/association_basics.html 그리고 8 페이지 분량의 비디오가 있습니다.이 중 90 %는 무료입니다. http://railscasts.com/?tag_id=2 – Benj