我在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,控制器应面向对象,而流程应面向对象:

jquery - 如何获取此HTML表单以在Ruby on Rails中提交?-LMLPHP

因此,当您询问new表单将如何与控制器通信时,答案是您必须将其与为控制器定义的各种路由绑定在一起。

具体来说,如果您具有new动作,则还应该具有create动作-您的表单将能够将其数据发送到该动作。

您的表单只是HTML -它们会将其数据发布到您在form_for块中定义的URL到您的控制器。结果是您能够在customers#create方法中调用适当的数据,该方法会将数据保存到db。

关于jquery - 如何获取此HTML表单以在Ruby on Rails中提交?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34377929/

10-11 14:16
查看更多