【发布时间】:2015-08-03 03:39:19
【问题描述】:
我有一个订单表格,其中包含产品的嵌套表格。产品正确保存到数据库,但在显示/编辑产品值时未加载 - 字段显示但未填充。
订购型号:
has_many :products, dependent: :destroy
accepts_nested_attributes_for :products
产品型号:
belongs_to :order
orders_controller:
before_action :set_order, only: [:show, :edit]
def new
@order = Order.new
@order.products.build
end
def show
# empty
end
def edit
# empty
end
def order_params
params.require(:order).permit(
:number,
:price,
products_attributes: [
:id,
:type,
:color
])
end
def set_order
if params[:id].present? && user_signed_in?
@order = Order.find(params[:id])
elsif params[:number].present? && params[:email].present?
@order = Order.find_by(number: params[:number], email: params[:email])
else
redirect_to welcome_index_path, alert: I18n.t('views.welcome.index.no_order_found')
end
end
routes.rb:
resources :orders do
get 'express', on: :new
end
post 'orders/status', to: 'orders#show'
_form.html.erb(编辑和显示都使用):
<%= form_for @order do |f| %>
<%= f.text_field(:number) %>
# etc.
<%= f.fields_for :products do |g| %>
<%= g.text_field(:color) %>
# etc.
<% end %>
<% end %>
【问题讨论】:
-
这里只是猜测,但由于
has_many,它可能无法显示。如果有很多产品,它怎么知道显示哪个产品的颜色? -
你能贴出显示/编辑的代码吗?
-
能否请您从 routes.rb 发布相关部分?您是否尝试将产品分配给变量并将 f.fields_for :products,@your_assigned_variable_for_products 做 || ?
-
@Vasseurth 我正在关注here 的示例。我也有同样的想法,所以就像@DeOldSax 说的我尝试在 show 中分配一个变量(
@product = @order.products.last- 我现在只关心一个产品)并将其传递给fields_for但它没有任何区别
标签: ruby-on-rails