얼마나 많은 유형이 있는지 알 수 없지만 이전에는 여러 유형의 컨트롤러와 뷰를 별도로 사용했습니다. 이렇게하면 기본 클래스의 새 객체를 만들지 않고 유형을 설정하려고 할 때 기본 클래스에서 상속 한 모델 만 사용하면됩니다. 리소스에 대한 각각의 새/편집 페이지는 form_for 블록에서 공유 부분을 렌더링 할 수 있습니다. partial은 file_field를 포함합니다.
양식을 제출할 때 올바른 컨트롤러로 이동하여 올바른 resource.new를 호출하면 모든 것이 정상입니다.
단점은 물론 더 많은 파일과 "새 파일 추가"에 링크하는 페이지는 "새 파일 유형 추가", "새 파일 유형 추가"등과 같은 여러 링크를 추가해야합니다.
형태로 유형을 설정하는 경우 작동 여부는 확실하지 않지만 의심 스럽지만 시도해보십시오 (Google에 알려주세요). 해당 유형을 select_tag 아래로 드롭 다운 할 수 있으며 변경되면 Javascript를 사용하여 양식의 작업 위치를 변경할 수 있습니다.
편집과 내가 & 내가 의심이 솔루션을 좋아하는
하지 주위에 기본 작업을 추가는 결코 최고의 의미하지만, 당신이 정말로 별도의 컨트롤러를 원하는하지 않는 경우에 당신이 당신을 작동하는 데 필요한 의해 이런 식으로 뭔가를 할 수 :
class XmlFile < ActiveRecord::Base
end
class XmlFileTypeA < XmlFile
end
class XmlFileTypeB < XmlFile
end
def create
# Leaving this case statement in the controller for simplicity but you probably want to move this to the model
case params[:chosen_xml_type]
when "file_type_a"
@item = XmlFileTypeA.new(params)
when "file_type_b"
@item = XmlFileTypeB.new(params)
else
raise "Unknown file type!"
etc
end
end
더하기 1 "wtF hax !!" – tybro0103