2014-12-01 1 views
0

모델없이 제 3 자 (스트라이프)에 데이터를 전달하는 내 레일 앱에 양식이 있습니다. 그러나 내 클라이언트는 이제 동일한 양식에 지속되는 다른 필드를 포함하기를 원합니다. 모델 바인딩 된 필드와 모델이 바인딩되지 않은 필드를 제출하는 양식은 어떻게 만듭니 까?레일스 양식에서 모델 바인딩 된 필드와 모델이 아닌 필드를 섞음

+0

당신은 단지 원시 HTML과 스트라이프 필드를 만들 수있는 모델

class MyModel < ActiveRecord::Base attr_accessor :stripe_attribute_one, :stripe_attribute_two end 

에서

. Stripe은 필드 데이터가 제출되는 것을 막기 위해 필드에'name' 속성을 설정하는 것을 원하지 않습니다. 어쨌든이 필드에 대한 유효성 검사는 클라이언트 측에서 수행해야하므로 스트라이프 필드를 'form_for'레일에 묶는 것이 실제로 이점이 없습니다. – deefour

답변

0

저는 Stripe에 익숙하지 않지만 'attr_accessor'를 사용하여 모델에 데이터베이스 바인딩되지 않은 속성을 쉽게 포함 할 수 있습니다. 양식

# assuming your model has migrated attributes called :db_attribute_one and :db_attribute_two 
<%= form_for @my_model %> 
    <%= f.text_field :db_attribute_one %> 
    <%= f.text_field :db_attribute_two %> 
    <%= f.text_field :stripe_attribute_one %> 
    <%= f.text_field :stripe_attribute_two %> 
<% end %> 
+0

Rails에서 속성을 사용하지 않기 때문에 이것은 추한 것입니다. 레일 폼 헬퍼를 통해 필드 집합을 렌더링하는 유일한 목적으로 모델을 수정하는 것은 혼란스럽고 불필요합니다. 또한이 도우미를 통하거나 Javascript를 통해 각 양식 필드에서 이름 속성을 설정 해제해야합니다. 스트라이프 형식 https://stripe.com/docs/tutorials/forms에 대한 요구 사항 이러한 이유로 일반 HTML은 더 간단합니다. – deefour

+0

@Deefour, "이름 속성을 해제 하시겠습니까?"라는 의미에 대해 자세히 설명해 주시겠습니까? – meetalexjohnson

+0

위의 원래 댓글 링크에서 문서를 읽으십시오. SSL없는 사이트에서 카드를 수락 할 수있는 이유는 stripe.js를 사용할 때 유선을 통해 카드 정보를 전달하지 않기 때문입니다. 양식 제출시 카드 정보를 보내지 않으려면 카드 필드에서'name = "..."'속성을 제거/설정 해제해야합니다. – deefour

관련 문제