【发布时间】:2018-02-05 20:20:00
【问题描述】:
我是 Rails 新手,正在开发一个示例应用程序。该应用程序背后的想法是,它是一个供孩子们乘坐校车的计算机化登记表。有四种型号:Family、Kid、SchoolRide 和 HomeRide。对于 Family 和 Kid,我生成了完整的脚手架,但对于 SchoolRide 和 HomeRide,它们只是带有布尔字段的模型,每个孩子是在早上签到校车还是在下午回家时签到。
我希望能够让用户从孩子展示视图上呈现的表单中签入孩子,但我无法从孩子控制器创建我的骑行模型实例。如何设置视图、路由和控制器?我在哪里/如何将参数传递给儿童控制器中的骑行模型?
这是我的表单渲染到孩子的展示视图中。目前,我收到语法错误。
<%= form_with(model: @school_ride, remote: true), :url => school_rides_path, :html => { :method => :post } do |form| %>
<div><p>
<%= form.label :check_in %><br>
<%= form.check_box :check_in %><br>
</p>
</div>
<div>
<%= form.hidden_field :kid_id, value: @kid.id %>
</div>
<p>
<%= form.submit %>
</p>
<% end %>
这是我的模型:
class Kid < ApplicationRecord
belongs_to :family
has_many :school_rides
has_many :home_rides
end
class HomeRide < ApplicationRecord
belongs_to :kid
end
class SchoolRide < ApplicationRecord
belongs_to :kid
end
以下是我的孩子控制器的一些相关部分:
def show
@family = Family.all
@school_ride = SchoolRide.new
end
# GET /kids/new
def new
@kid = Kid.new
end
# GET /kids/1/edit
def edit
end
# POST /kids
# POST /kids.json
def create
@kid = Kid.new(kid_params)
respond_to do |format|
if @kid.save
format.html { redirect_to family_path(id: @kid.family_id), notice: 'Kid was successfully created.' }
format.json { render :show, status: :created, location: @kid }
else
format.html { render :new }
format.json { render json: @kid.errors, status: :unprocessable_entity }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_kid
@kid = Kid.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def kid_params
params.require(:kid).permit(:name, :birthdate, :grade, :family_id)
end
def school_ride_params
params.require(:school_ride).permit(:check_in)
end
这是我的一些路由:
resources :kids
resources :school_rides, only: [:new, :create]
【问题讨论】:
标签: ruby-on-rails forms model-view-controller routes