我在Ruby on Rails上还是个新手,但是我决定亲自尝试一下我一直想制作的Table Reservation Application。我在如何创建典型的数量增量表单时不休,遇到了一些信息,最终我的表单最终看起来像这样:
http://codepen.io/anon/pen/xZVNoz
并不是那么花哨,但它可以工作(对代码笔不起作用,但对我的项目有效),这很重要,现在我需要此表单来提交并通过我的Reservations Controller,如下所示:
class ReservationsController < ApplicationController
def index
end
def create
@reservation = Reservation.new(reservation_params)
reservation.save
end
private
def reservation_params
params.require(:reservation).permit(:user_email, :num_of_people, :reservation_time, :table_id)
end
end
因此,从本质上讲,当用户单击要预订的表时,会出现此小表格,他们选择与他们在一起的客人人数,然后点击“提交”和“繁荣”,它会记录预订者(通过用户的电子邮件),以及携带他们的人数(使用带加号和减号的数量指示器表示),预订时间和表格ID。我的问题是,我不确定如何使Submit和Reservations控制器相互通信。有任何想法吗?我是否缺少任何关键步骤?
预先感谢您的任何帮助。
最佳答案
我是Ruby on Rails的新手
欢迎!!
做这个:
#config/routes.rb
resources :reservations
#app/controllers/reservations_controller.rb
class ReservationsController < ApplicationController
def new
@reservation = Reservation.new
end
def create
@reservation = Reservation.new reservation_params
@reservation.save
end
private
def reservation_params
params.require(:reservation).permit(:user_email, :num_of_people, :reservation_time, :table_id)
end
end
这将允许您使用以下形式:
#app/views/reservations/new.html.erb
<%= form_for @reservation do |f| %>
<%= f.email_field :user_email %>
<%= f.number_field :num_of_people %>
<%= f.submit %>
<% end %>
这将允许您通过访问
url.com/reservations/new
创建预订为了解释它是如何工作的,Rails是基于Object Orientated原理构建的-应用程序中的所有内容都应该是或至少服务于一个对象。
您的routes are object orientated,控制器应面向对象,而流程应面向对象:
因此,当您询问
new
表单将如何与控制器通信时,答案是您必须将其与为控制器定义的各种路由绑定在一起。具体来说,如果您具有
new
动作,则还应该具有create
动作-您的表单将能够将其数据发送到该动作。您的表单只是HTML -它们会将其数据发布到您在
form_for
块中定义的URL到您的控制器。结果是您能够在customers#create
方法中调用适当的数据,该方法会将数据保存到db。关于jquery - 如何获取此HTML表单以在Ruby on Rails中提交?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34377929/