2011-09-02 2 views
1

나는이 모델을 관리하는 3 가지 모델 (단어, Adjectiv, 부사) 및 하나의 컨트롤러 (단어)를 가지고 있습니다. 단 하나의 양식 만 가지고 있으며, 사용자는 부사, Adjectiv 또는 단어. 내 편집 기능 :여러 모델 및 하나의 컨트롤러로 편집하는 것에 대한 질문

예를 들어
def edit 
     @word=Word.find(params[:id]) 
     @adjektiv=Adjektiv.find(params[:id]) 
     @adverb =Adverb.find(params[:id]) 
    end 

내가 부사의 하나 개의 레코드를 편집 할 (ID = 1) ID와 adjectiv 및 Word의 또 다른 기록 = 1 Textboxes.I에 표시 만 시청하고 싶습니다 부사의 첫 번째 기록 어떻게해야합니까? 감사합니다

+0

사용자가 소개하는 단어 (단어, adjektiv 또는 부사)가 무엇인지 알 수있는 방법이 없습니까? – cicloon

+0

나는 아약스 아코디언을 사용하고 각각 (단어, 형용사, 부사)에 자신의 탭이있다. –

답변

3

이것은 adjett와 부사가 단어이므로 STI (Single Table Inheritance)를 사용하는 완벽한 상황입니다. 이것을 달성하려면 단어 표에 type이라는 문자열 필드가 필요합니다. 그럼 당신은 이런 식으로 그것을 할 수 : 컨트롤러에서

def Word < ActiveRecord::Base 
end 

def Adjektiv < Word 
end 

def Adverb < Word 
end 

그리고 다음을 :

def edit 
    @word=Word.find(params[:id]) 
end 
+0

대답 해 주셔서 감사합니다. 내 테이블에 가장 적합한 이름을 선택하지 않았습니다.이 테이블에는 전혀 설명이 없습니다. 말씀해주십시오. 나, 어떻게 내 Scnario에서이 문제를 해결할 수 있을까? –

1

하나만 사용자 양식 그러나 여러 모델을 가지고 있다면, 당신이 하나의 여러 모델을 연결하는 것을 의미 제어 장치. 따라서 중첩 모델 양식 접근 방법을 사용하는 것이 좋습니다.

Nest Form-Model의 Ryan Bates가 작성한 excellent railscast을 따르십시오.

링크는 railscast의 파트 1에 대한 것이며, 동일한 웹 사이트에서 후속 railscast를 찾을 수 있습니다.

이 방법을 사용하면 코드를보다 명확하고 효율적으로 유지 관리 할 수 ​​있습니다.

감사합니다.

관련 문제