양식에서 클릭 할 때 확인란이 true를 반환해야합니다. 체크 박스를 체크하거나하지 않은 경우
양식에서 당신은 단지 지정
컨트롤러 방금 형태에서 반환되는 것을 저장에서
<%= f.check_box :terms_of_service %> Accept Terms of Services
check_box(object_name, method, options = {}, checked_value = "1", unchecked_value = "0")
: 당신 마이그레이션에서
#you whitelist the parameter together with all the other params you have
def user_params
params.require(:user).permit(:terms_of_services)
end
#You create your user as usual
def create
@user = User.new(user_params)
end
좀 더 명확하게하기 위해 terms_of_services에 대한 기본 옵션을 추가합니다.
class AddTermsOfServicesToUser < ActiveRecord::Migration
def change
add_column :users, :terms_of_services, :boolean, default: false
end
end
편집
당신이 당신의 사용자 모델의 열을 생성하지 않는 경우, 서버 측 서비스의 측면에서 작동 할 수있는 방법이 없습니다. 열을 만들지 않고 원하는 경우에만 클라이언트 측에서 terms_of_servies로 작업 할 수 있습니다.
<input type="checkbox" id="cbox1" value="accepted" onchange='enableSubmitTag(this)'>
<label for="cbox1">Accept Terms of Services</label>
안 (당신이 데이터베이스에는 열이 없기 때문에 당신이없는 객체를 필요로하기 때문에)
는 레일 CHECK_BOX 도우미없이 체크 박스를 만들기 : 이것은 당신이 그렇게 할 수있는 방법입니다 기본적으로 제출 버튼
<%= f.submit "Create", class: "btn btn-primary", id: "submit_button", disabled: true%>
서비스 약관 확인란을 클릭하면 제출 버튼을 다시 활성화하십시오.
function enableSubmitTag(element) {
if(element.checked){
document.getElementById('submit_button').disabled = false;
} else {
document.getElementById('submit_button').disabled = true;
};
};
테이블에 terms_of_services를 저장하면 서버 측에서도 유효성을 검사 할 수 있습니다. 당신은 모든 자바 스크립트를 사용할 수 있습니다.
<%= f.check_box :terms_of_service, :onchange => 'enableSubmitTag(this)' %> Accept Terms of Services
레일의 형식을 정할 수 있습니까? –
답변을 업데이트했습니다. 또한 스키마의 terms_of_services에 대한 기본값을 false로 설정합니다. 그렇게하면 사용자가 명시 적으로이를 true로 변경해야합니다. –
테이블에 열을 넣으면 어떻게 사용하는지 알고 있습니다. 나는 그것을 시도 할 수있는 방법을 확인하고 싶었다. –