Ruby on rails 访问rails表单帮助器内部的模型ID
首先,我是rails新手,我有一个连接表,我试图在创建时将ID加载到其中 我有一个表单帮助器,它可以访问Order.new(:id,:name)字段和菜单的字段。\u Order(:menu\u id,:Order\u id)。我可以从select中插入菜单id,但我一辈子都不知道如何用表单在@order中保存的当前订单id填充隐藏的输入 看看这里的订单号Ruby on rails 访问rails表单帮助器内部的模型ID,ruby-on-rails,ruby,postgresql,activerecord,form-helpers,Ruby On Rails,Ruby,Postgresql,Activerecord,Form Helpers,首先,我是rails新手,我有一个连接表,我试图在创建时将ID加载到其中 我有一个表单帮助器,它可以访问Order.new(:id,:name)字段和菜单的字段。\u Order(:menu\u id,:Order\u id)。我可以从select中插入菜单id,但我一辈子都不知道如何用表单在@order中保存的当前订单id填充隐藏的输入 看看这里的订单号 <div class="form"> <h1>Create a new order</h1> <
<div class="form">
<h1>Create a new order</h1>
<%= form_for @order do |f| %>
<%= f.label :name%><br>
<%= f.text_field :name%><br>
<h3>Select meals</h3>
<%= fields_for(@menus_order) do |i| %>
<div class="field">
<%= i.select :menu_id, options_for_select(Menu.all.pluck(:id)) %>
<%= i.hidden_field :order_id, :value => ORDER_ID HERE %>
</div>
<% end %>
<br>
<%= f.submit "Create"%><br>
<% end %>
</div>
创建新订单
选择食物
这里的订单号%>
谢谢,DW
您应该为订单模型使用嵌套属性,仅适用于
公约是正确的&它将得到处理,你可以通过
以下示例:
order.rb应该是这样的:
类顺序
菜单\u order.rb类似于:
class菜单顺序
订单/new.html
创建新订单
选择食物
OrdersController
class OrdersController
如果这是一个新订单,它怎么会有ID?
class Order < ActiveRecord::Base
has_many :menu_orders
accepts_nested_attributes_for :menu_orders
end
class MenuOrder < ActiveRecord::Base
belongs_to :order
end
<div class="form">
<h1>Create a new order</h1>
<%= form_for @order do |f| %>
<%= f.label :name%><br>
<%= f.text_field :name%><br>
<h3>Select meals</h3>
<%= f.fields_for :menu_orders do |i| %>
<div class="field">
<%= i.select :menu_id, options_for_select(Menu.all.pluck(:id)) %>
</div>
<% end %>
<br>
<%= f.submit "Create"%><br>
<% end %>
</div>
class OrdersController < ApplicationController
def new
@order = Order.new
@order.menu_orders.build
end
def create
@order = Order.new(order_params)
if @order.save
redirect_to orders_path
flash[:success] = "Order created"
else
render 'new'
end
end
private
def order_params
params.require(:order).permit(:name, menu_orders_attributes: [ :menu_id, :order_id ])
end
end