使用id检索订单详细信息

时间:2014-08-18 16:49:42

标签: ruby-on-rails

我使用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检索并显示订单类型详细信息。我该怎么做?

2 个答案:

答案 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中定义的函数。

或者您可以使用关联来获取订单详细信息