2009-10-21 2 views
0

사용자가 모델에 연결하지 않는 상자를 틱하는 사용자 등록 양식을 만들고 싶습니다.Formtastic 및 Formtaghelper

예를 들어 사용자 모델에 '틱된 조건 & 조건'이라는 부울 필드를 사용하고 싶지 않은 'terms & conditions'상자가있을 수 있습니다. 대신 T & Cs를 수락 한 날짜/시간을 기록한 다른 곳 (트랜잭션과 같은)에서 레코드를 만들고 싶습니다.

또 다른 예는 나중에 사용하고 '내 기억하기'와 같이 지금 당장 세션에서 개최하겠다고 표시 한 선호도 일 수 있습니다.

이러한 유형의 필드를 일반 양식 도우미와 혼합 할 수 있습니다. formtastic을 사용할 때 위의 예제 중 하나를 어떻게 수행 할 수 있습니까? 전통적인 레일 태그와 사랑스럽고 깨끗한 formtastic 코드를 섞어야하는 그런 종류의 스틱.

답변

1

데이터베이스 열에 반드시 묶일 필요는없는 가상의 속성을 모델에 여러 개 만들 수 있습니다. attr_accessor : terms_and_conditions을 사용자 모델에 추가하면 데이터베이스 필드가 아니더라도 formtastic에서 '필드'를 사용할 수 있습니다. 다른 필드와 마찬가지로 유효성을 검사하거나 필요한 경우 다른 곳에서 레코드를 만들 수있는 자체 setter 메서드를 만들 수 있습니다.

0

대신 나는 기록 다른 곳들은 는 T & 고사를 접수 날짜/시간을 기록 (트랜잭션 등) 만들려고합니다.

bensie가 설명하는 attr_accessor를 사용하여 필드를 formtastic과 통합하십시오.

Formtastic은 뷰 로직에 관한 것이지만 관계는 더 많은 모델 논리입니다. 양식에 관련된 레코드를 작성하는 것에 대해 걱정하지 마십시오. 대신 모델에서 before_update 및 after_save와 같은 콜백을 사용하여 관련 레코드가 만들어 졌는지 확인하십시오.

1

작업 관련 항목 요소에 attr_accessors를 사용하는 방법에 동의하지 않을 수 있습니다. Ts & Cs를 기록해야하는 경우 이해가되지만 가끔 모델과 관련이없는 데이터가 필요하며 '작업 실행 중 일부 중량 작업 수행'과 같은 특정 작업에만 관련이 있습니다.

가입 양식이 있고 OAuth를 사용하지 않고 가입시 Twitter 사용자 이름과 비밀번호를 지정할 수있는 옵션이 있다고 가정 해 보겠습니다. 이것은 괜찮습니다 :

그러나이 아래 비트는 혼란 스럽습니다.이 경우 formtastic은 실제로 이미 존재하는 것을 제거합니다. params [: your-object]를 추가하는 방법이 있습니까?

방법에 대해 :

class User < ActiveRecord::Base 
... 
    #I don't want this here. Its only for UserController#create. 
    #attr_accessor :tweet_when_signed_up 
... 
end 

과 :

<%= form.input :tweet_when_signed_up, :as => :checkbox, :param_only => true %> 

param_only 내 만들어 낸 제안입니다. '일시적인 재산조차도 아니야. 이 작업을 위해서입니다.

class UserController < ActionController::Base 
... 

def create 
    if params[:tweet_when_signed_up] # haven't done this yet -- == 1 or !.nil? 
    Tweeter.tweet(...) 
    end 
    @user = User.create(params[:user]) 
end 

이 작업을 수행 할 수있는 가능성이 있습니다. 위의 좋은 생각을 효과적으로 수행하는 방법을 알고있는 사람이 있습니까?

감사합니다.

관련 문제