홈>
초보자 레일 질문 :
와이즈 비즈가있다 내 양식의 맨 위에 구독을 쉽게 만들 수 있도록 params 값을 데이터베이스에 저장하고 싶습니다. 아래에 내보기, 컨트롤러 및 모델 파일이 있습니다. 가장 좋은 방법은 무엇입니까? info .. 여기에서 배우고 감사의 말이 필요하면 알려주십시오!
보기 :
hidden_field_tag
컨트롤러 :
<%= form_for @register, html: {id: 'payment-form'} do |f| %>
<%= hidden_field_tag :plan, params[:plan] %>
<div class="form-group">
<%= f.label :name_of_person_completing_form, "Name of Person Completing Form" %>
<%= f.text_field :name_of_person_completing_form, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :email, "Your Email" %>
<%= f.text_field :email, placeholder: "Ex: [email protected]", class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :role_in_school, "Role in School" %>
<%= f.text_field :role_in_school, placeholder: "Ex: School Counselor, Assistant Principal", class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :school_name, "School Name" %>
<%= f.text_field :school_name, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :grade_levels, "Grade Levels" %>
<%= f.text_field :grade_levels, placeholder: "Ex: 9-12, 6-8, 6-12", class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :street_name, "Street Name" %>
<%= f.text_field :street_name, placeholder: "Ex: 123 School Drive", class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :city, "City" %>
<%= f.text_field :city, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :state, "State" %>
<%= f.text_field :state, placeholder: "Ex: Virginia, Pennsylvania, California", class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :zip_code, "Zip Code" %>
<%= f.text_field :zip_code, class: 'form-control' %>
</div>
<div class="form-group">
<label for="card-element">
Credit or debit card
</label>
<div id="card-element", class = "form-control">
<!-- a Stripe Element will be inserted here. -->
</div>
<!-- Used to display Element errors -->
<div id="card-errors" role="alert"></div>
</div>
<div class="actions form-group">
<%= f.submit "Submit!", class: 'btn btn-success', id: 'form-signup-btn' %>
</div>
<% end %>
모델 :
class SchoolRegistrationsController < ApplicationController
def new
@register = SchoolRegistration.new
end
def create
@register = SchoolRegistration.new(register_params)
if @register.save_with_subscription
flash[:success] = "Congratulations! You registered your school!"
redirect_to new_user_registration_path
else
flash[:danger] = @register.errors.full_messages.join(", ")
redirect_to new_registration_path
end
end
private
def register_params
params.require(:school_registration).permit(:name_of_person_completing_form, :email, :role_in_school, :school_name, :grade_levels, :street_name, :city, :state, :zip_code)
end
end
class SchoolRegistration < ApplicationRecord
validates :name_of_person_completing_form, presence: true
validates :email, presence: true
validates :role_in_school, presence: true
validates :school_name, presence: true
validates :grade_levels, presence: true
validates :street_name, presence: true
validates :city, presence: true
validates :state, presence: true
validates :zip_code, presence: true
belongs_to :plan
attr_accessor :stripeToken
def save_with_subscription
if valid?
customer = Stripe::Customer.create(description: email, plan: plan_name, source: stripeToken)
# This will make a call to stripe server and charge their card then create subscription
self.stripe_customer_token = customer.id
save!
# This runs save on the spot and sends it to the database
end
end
end
- 답변 # 1
- 답변 # 2
다음을 시도하십시오
hidden_field_tag 'school_registration[plan]', params[:plan]
<%= f.hidden_field :plan, value: params[:id] %>
업데이트register_params
의 방법 섹션private
params.require(:school_registration).permit(:name_of_person_completing_form, :email, :role_in_school, :school_name, :grade_levels, :street_name, :city, :state, :zip_code, :plan)
추가도움이 필요합니다
- 답변 # 3
plan_id를 허용 된 매개 변수에 포함 시키려고합니다 :
plan
숨겨진 매개 변수를 양식의 일부로 추가합니다 :
def register_params params.require(:school_registration).permit(:name_of_person_completing_form, :email, :role_in_school, :school_name, :grade_levels, :street_name, :city, :state, :zip_code, :plan_id) end
컨트롤러에서 값을 설정합니다 :
<%= form_for @register, html: {id: 'payment-form'} do |f| %> <%= f.hidden_field :plan_id %>
def new # You should also validate if the plan exists in advance @register = SchoolRegistration.new(plan_id: params[plan]) end
관련 자료
- 데이터베이스에 내 정보를 저장하는 Laravel CRUD 문제
- c# - 변환 된 메일 주소를 저장할 때 데이터베이스에 왜 null이 있습니까?
- javascript - 데이터베이스에 올바른 값을 저장하지 않은 날짜
- php - 데이터베이스 호출에서 추출 된 데이터에 새 필드 추가
- forms - Rails 날짜 필드 드롭 다운에서 시작 날짜 및 종료 날짜 옵션을 설정하는 방법은 무엇입니까?
- c# - aspnet에서 코드 뒤에 HTML 버튼으로 숨겨진 필드 값을 얻는 방법
- Rails 콘솔에서 데이터베이스를 유지할 수 없습니까?
- java - 오류 - 이 필드를 데이터베이스에 저장하는 방법을 알 수 없습니다
- php - 데이터베이스에 3 개의 다른 필드 이름이있는 경우 전체 이름을 어떻게 검색합니까?
- c# - 데이터베이스없이 프로그램에서 입력 데이터 저장
- ruby - 데이터베이스 함수가 포함에서 레일 쿼리 계획을 깨는 이유는 무엇입니까?
- wordpress - 데이터베이스에서 내 user_login을 acf 선택 필드 코드로로드
- spring boot - 숨겨진 필드의 가치를 형태로 얻으십시오
- mysql - phpmyadmin 데이터베이스 열에서 필드 데이터 형식화
- email - laravel로 양식을 제출 할 때 숨겨진 필드에서 현재 페이지 제목을 얻는 방법
- 레일 - model 메소드에 동일한 이름의 테이블 필드 사용 이 작동 할 수 있습니까?
- html - 레일 5의 번호 필드 메시지 변경
- php - html 입력 필드의 값을 데이터베이스에 저장하는 방법
- django - 저장하는 동안 id로 필드를 채울 수 있지만 id가 아직 존재하지 않는 방법
- python - Django Model Form이 데이터베이스에 데이터를 저장하지 않지만 개체가 생성됨
관련 질문
- 속성과 열의 차이점은 무엇입니까?
- "http://rubygems.org" 소스가 있는 레일 4.2.10을 설치할 수 없습니다. 금지 오류가 발생함
- 번들러는 vendor/bundle/bin과 vendor/bundle/ruby/2.6.0/bin 중에서 어떻게 선택합니까?
- Ruby에서 수동으로 JSON 구조를 만드는 방법은 무엇입니까?
- RSpec: receive().with()를 연결하는 방법?
- 업데이트 시 이메일을 확인하지 않는 고안
- Rails: rake db:create:all에서 데이터베이스 생성에 대한 Postgres 권한이 거부되었습니다.
- 플래시 오류에 줄 바꿈을 추가하려면 어떻게 합니까?
- RSpec에서 업데이트 작업을 테스트하고 true로 평가되지만 테스트가 실패합니까?
- rolify를 통해 리소스 인스턴스 관점에서 역할을 관리하려면 어떻게 해야 합니까?
hidden_field_tag
대신 hidden_field를 사용해야합니다 .hidden_tag
사용 당신은plan
를 잡을 수 있습니다 와이즈 비즈 .이것은 당신이 원하는 것을 할 것입니다 :
와
<%= f.hidden_field :plan, value: params[:plan] %>
를 허용하는 것을 잊지 마세요업데이트
plan
로 갈 수 있습니다 또한이 경우 필드 이름을 수동으로 지정해야합니다.