我使用Rails 4.1建立的购物车应用程序有一个带有架构的order_type模型:
create_table "order_types", force: true do |t|
t.string "order_name"
t.integer "max_limit"
这属于Orders模型。用户可以从新的订单页面中选择订单类型,我使用集合选择来显示它。 order_type_id将保存到创建的每个订单中。订单controller.rb:
class OrdersController < ApplicationController
def new
@order = Order.new
@item = @order.items.build
end
def index
@orders = Order.all
end
def show
@order = Order.find(params[:id])
@items = Item.where(:order_id => @order.id)
end
def create
@order = current_user.orders.new(order_params)
respond_to do |format|
if @order.save
OrderMailer.order_submission(@order).deliver
format.html { redirect_to @order, notice: 'Order Submitted.' }
format.json { render :show, status: :created, location: @order }
else
format.html { render :new }
format.json { render json: @order.errors, status: :unprocessable_entity }
end
end
end
以下是表单中使用的收集者选择:
<div class="form-group">
<%= f.label :order_type_id %><br>
<%= f.collection_select(:order_type_id, OrderType.all, :id, :order_name, prompt: true, class: "form-control") %>
</div>
我想根据存储的order_type_id检索并显示订单类型详细信息。我该怎么做?
答案 0 :(得分:1)
<%= @order.order_type %>
将获得与该特定订单关联的OrderType。那就是:
<%= @order.order_type.order_name %>
检索OrderType上的属性。
答案 1 :(得分:1)
您可以在ApplicationHelper
中编写一个函数,例如:get_order_type_details_by_id(order_type_id)
,只需返回订单详细信息即可。您可以从任何视图模板直接调用该辅助函数。可以在所有视图中访问ApplicationHelper中定义的函数。
或者您可以使用关联来获取订单详细信息