是指在Rails框架中,表单提交时不通过用户输入的方式传递参数。这种情况通常发生在需要在后端自动生成参数的场景中,例如自动生成订单号、生成随机验证码等。
在Rails中,可以通过以下步骤实现简单表单不从输入传递参数:
下面是一个示例代码:
# 前端页面(app/views/orders/new.html.erb)
<%= form_for @order do |f| %>
<%= f.label :order_number %>
<%= f.text_field :order_number, value: @order.order_number, readonly: true %>
<%= f.submit "提交订单" %>
<% end %>
# 后端控制器(app/controllers/orders_controller.rb)
class OrdersController < ApplicationController
def new
@order = Order.new
@order.order_number = generate_order_number
end
def create
# 保存订单到数据库或其他持久化存储中
@order = Order.new(order_params)
if @order.save
# 其他操作,如发送邮件、生成订单等
redirect_to @order, notice: "订单创建成功!"
else
render :new
end
end
private
def order_params
params.require(:order).permit(:order_number)
end
def generate_order_number
# 使用SecureRandom生成订单号
SecureRandom.hex(8)
end
end
在上述示例中,通过在控制器的new动作中生成订单号,并将其赋值给表单的order_number字段。在create动作中,通过params获取表单提交的其他参数,并保存到数据库中。
这样,当用户提交表单时,不需要输入订单号,而是通过后端自动生成的方式来获取。
领取专属 10元无门槛券
手把手带您无忧上云