특정 모델과 일대일로 대응하지 않는 여러 가지 양식이 있습니다. 필자는 관련 양식 유효성 검사와 일치하지 않는 특정 유효성 검사가있는 경우 양식 개체 패턴 (또는 Decorator 등)을 사용하여 이러한 양식을 강화했습니다.양식 개체에 경로를 정의하는 방법
예 :
class ProfileClaimRequestForm
extend ActiveModel::Naming
include ActiveModel::Conversion
include ActiveModel::Validations
attr_accessor :email, :profile
delegate :persisted?, :id, to: :profile #??
validate :matching_emails
def initialize profile, email = nil
self.profile = profile
self.email = email
end
private
def matching_emails
errors.add(:email, 'The email address entered does not match our records') unless self.email == self.profile.profile.email
end
end
그러나 나는 그 길 선언을 건조 할 수 바라고, 내가 잘 작동 form_for @form_obj, profile_claim_path(@form_obj.profile.id)
을 사용하고이를 호출합니다. 나는 내 양식 객체가 경로 나 비슷한 것을 정의하도록 응답 할 수있는 마법 방법이 있는지 궁금합니다. 이상 적으로 나는 그것을 내려받을 수있다 form_for @form_obj
나는 현재 레일즈 3에 있지만 우리는 가까운 미래에 레일즈 4로 이동할 계획이다.
하면 폼의 대상 경로를 수동으로 지정해야합니다 그리고 당신은 짧은이
form_for [@user, @profile]
긴 대답과 같은 형태의 도우미로 직접 사용할 수있을 것 중첩 된 추가 명령을 사용하여 해당 규칙을 사용할 수 있습니까? 'resources profiles do 'start_claim' end' – Drew
네, 네스트 한 리소스 ('콜렉션'과 '멤버'참조)에서 경로를 커스터마이징 할 수 있지만'form_for'는 항상 디폴트를 사용합니다 'create '및'업데이트 '경로를 선택하십시오. 자세한 내용은 http://guides.rubyonrails.org/routing.html을 참조하십시오. – Benj
@Drew, 제 답변이 당신의 솔루션을 찾는 데 도움이 되었습니까? – Benj