2010-06-10 5 views
1

주어진 모델에 대해 입력의 id 특성을 어떻게 생성합니까? 나는 first_name 속성 Person의 모델이있는 경우 예를 들어, 양식 도우미는이 HTML과 텍스트 상자를 출력합니다 : 내가 생성 할 수있는 방법ActiveRecord 모델로 입력 ID 생성

<input type="text" id="person_first_name" /> 

을하는처럼 코드에서 다른 장소 (에서 person_first_name 컨트롤러 또는 일부 장소)?

답변

1

나는 중성미자의 충고에 따라 결국 레일 코드를 조금 더 보았다. 나는 InstanceTag 클래스의 개인적인 방법 몇 개를 꺼내서 조금씩 옮겼습니다. 나는 원숭이 최선의 해결책이 될 수 없습니다 ActiveRecord::Base,에이 패치,하지만 지금 작동 : 네, 잠시 동안 InstanceTag 주위에 찌르지 않았다

def create_tag_id(method_name) 
    object_name = ActionController::RecordIdentifier.singular_class_name(self) 
    "#{sanitized_object_name(object_name)}_#{sanitized_method_name(method_name.to_s)}" 
end 

private 
    def sanitized_object_name(object_name) 
    object_name.gsub(/\]\[|[^-a-zA-Z0-9:.]/, "_").sub(/_$/, "") 
    end 

    def sanitized_method_name(method_name) 
    method_name.sub(/\?$/,"") 
    end 
+0

나는 똑같은 일을했지만 모델에 그 메소드를 두는 대신 폼 빌더를 대체하고 확장했다. http://stackoverflow.com/questions/4819696/how-do-you-get-the-rails-generated- id-of-a-form-reference-in-javascri/5432558 # 5432558 – ilpoldo

1

좋은 습관 땐

이러한 값은 nodoc 혼성 InstanceTag 클래스 내에 전용의 방법에 의해 생성된다 : 레일 '코드를 파기한다. 출처는 here입니다. 관심 대상의 방법은 add_default_name_and_id, tag_id 및 아마도 tag_id_with_index입니다. 거기에 멋진 아무것도.

+0

,하지만 난 아직 루비 너무 새로 온 사람과 레일 정말 거기에 무슨 일이 벌어지고 있는지 정말 이해합니다 :). 나는 속성/속성으로서 괄호가없는 메소드를 계속 오용했다고 생각합니다. – swilliams