Ruby on rails 访问rails表单帮助器内部的模型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> <

首先,我是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>
  <%= 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