2011-11-13 4 views
0

나는 모델을 가지고 ProductFeature명명 규칙에서 인스턴스 변수까지?

나는이 컨트롤러 내 CRUD의 '수정'방법을 쓰고 있어요 product_feature_controller.rb

라는 컨트롤러. edit 메서드에서 @productFeature이라는 인스턴스 변수를 만들고 ProductFeature.find(:id)과 같게 설정하고 form_for(:product_feature)에서 사용할이 인스턴스 변수를 내보기로 보냅니다. 나는 내 양식이 필드를 현재 레코드로 채우지 않을 것임을 발견했습니다. 몇 시간 동안 머리카락을 뽑은 후에, 내 오류가 모두 내 인스턴스 변수라는 방식으로 내게 떠올랐다.

@productFeature 대신 @product_feature라는 이름을 지정해야합니다. 이것은 사소한 부분처럼 보이지만 실제로 이것이 왜 그런지 알고 싶습니다. 이것도 어떻게 작동합니까? 인스턴스 변수의 이름을 기반으로 양식을 채우는 방법을 Rails가 어떻게 알고 있습니까? 제 질문이 분명해지기를 바랄뿐입니다.

답변

1

심볼 :product_feature (form_for)이 해당 심볼을 기반으로 인스턴스 변수를 조회하기 때문에. 변환을하지 않으며 @product_feature 변수를 찾습니다. 일치하는 한 괜찮습니다.하지만 Ruby에서는 단어 사이에 밑줄을 사용합니다.

또한 모델의 이름은 번체로 ProductFeature으로 지정해야합니다. 이것이 어떤 문제를 일으킬 지 모르겠지만 그것이 규범에 어긋납니다.

+0

매우 감사합니다. 이제는 분명히하기 위해, 내 'form_for'태그가 올바른 모델을 찾을 수 있도록 ': product_feature'로 기호를 써야합니까? 나는 ': productFeature'라는 기호를 쓰지 않고 다른 것을 만들지 않고이 문제를 해결할 수 없었을까요? –

+0

맞습니다. 모델 이름은 대문자로 시작됩니다. 내 질문에 고마워, 고마워. –

+0

@ Guided33 시도한 적이 없지만 모델 변수가'@ productFeature'이고 심볼이'@ product_feature' 인 경우, 나는 그것이 작동 할 것으로 기대합니다. 시도하기에 충분하다. (그리고 다시보고하라! :) –

관련 문제