【发布时间】:2018-06-27 01:04:07
【问题描述】:
Rails 初学者问题:
我的表单顶部有一个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: schoolcounselor@school.com", 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
【问题讨论】:
标签: ruby-on-rails ruby database hidden-field