몇 가지 모델을 적절하게 함께 묶으려고 Hobo 앱을 만들고 있습니다.Hobo에서 저장되지 않은 객체의 조상 객체를 가져옵니다.
Activity
개체에 많은 Page
개의 자식이 있습니다. 또한 많은 어린이가 DataSet
명 있습니다.
Page
개체에는 여러 가지 종류의 자식이 있습니다. Widget
어린이에 대해 이야기하겠습니다.하지만 동일한 문제가있는 여러 유형이 있습니다. Widget
의 인스턴스는 Page
에 속하지만 belongs_to
관계와 DataSet
이 있습니다. 중요한 점은 다음과 같습니다. DataSet
은 Activity
에 속해야합니다. 주어진 @widget
에 대한 그래서 :
@widget.page.activity === @widget.data_set.activity
은 저장에 대한 검증과 모델이 제약 조건을 적용 할 정도로 간단합니다. 트릭은 Widget
의 형태 만 나는이 같은 태그를 사용하여 기존 개체에 대한 작업을 얻을 수 있었다 현재 Activity
에 대한 DataSet
들 포함 사용할 수 DataSet
s의 선택 메뉴에서, 제시 :
&this
또는
&this.page
중 하나가 아직 설정되지 않았기 때문
<data_set-tag: options="&DataSet.activity_is(&this.page.activity)" />
은 그러나, 새로운Widget
, 이것은, messily 실패합니다. /pages/:page_id/widgets/new
과 같은 페이지 ID가 포함 된 경로의 경우에도 Activity
을 DataSet
의 목록 범위에 실제로 추가 할 수 없습니다.
적절한 레일이라면 또는 비슷한 종류의 컨트롤러로 볼 수있는 Activity
을 만들 겠지만 호보에서는 컨트롤러가 95 %의 Magic ™ 및 I 어디서부터 시작해야할지 모르겠다. 어떤 지식이 현재 Activity
인지 어딘가에 있어야합니다. 내가 어떻게 알아낼 수 있니?
이것은 Hobo 1.3.x on Rails 3.0.x입니다.
ETA이 기존 Widget
의 편집을 위해 일하는,
<extend tag="form" for="Widget">
<old-form merge>
<field-list: fields="&this.field_order">
<data_set-tag: options="&DataSet.activity_is(&this.page.activity)" />
</field-list>
</old-form>
</extend>
은 제가 위에서 말했듯이,하지만 Widget
의 새로운 없습니다 : 오류를 생성하는 코드는 다음처럼, Widget
의 form
태그에 ; 오류는 undefined method 'page' for nil:NilClass
입니다. Bryan Larsen의 답변은 &this.page
이 null이 아니어야 함을 나타냅니다.
나는 호보 사용자의 메일 링리스트에 게시하려고하지 않았다; 나는 놀랐지 만 나는 존재하지 않았다. 어쩌면 자동으로 방향이 바뀌었을까요? 어쨌든,이 답변은 나에게 몇 가지 발판을 제공합니다. 감사합니다! 나는 조금 돌아와서 성공을보고하거나 나의 질문을 다듬을 것이다. – pjmorse
내가이 답변에서 배운 첫 번째 일은 : 나는 '이'이 무엇인지 이해하지 못했거나 이해하지 못했다. (나는 건설을 이해하지만, 나는 호보가 설정 한 것을 항상 이해하지는 않는다.) – pjmorse
: S 글쎄, 나는 '이 thispage.activity' *가 작동해야한다고 동의하지만, 그렇지 않다. 우리의 최근 전략은'& this '를 인수로 취해 적절한'Activity'를 반환하는'app/helpers/application_helper.rb'의 도우미 였지만'& this'를 인수로 사용하면 "잘못된 인수 수 (0에 1). " Grrr ... – pjmorse