J'ai une table appelée "order" qui a beaucoup de "order_items", chaque "order_items" appartient à "order" et "product". Dans la DB, j'ai un enregistrement dans l'ordre. le dossier est comme ceci:Pourquoi je ne peux pas boucler l'information de DB dans RoR?
table commandes: id = 1 name = client
et la table ordre_items est comme ceci: id = 1 product_id = 233 order_id = 1
id = 2 product_id = 454 order_id = 1
Je suis en train de ce code pour montrer l'ordre, mais il est pas le succès:
<% semantic_form_for @order do |f| %>
<% f.inputs do %>
<%= f.input :name %>
<% end %>
<%= f.buttons %>
<% end %>
et voici mon order.rb:
class Order < ActiveRecord::Base
has_many :order_items
end
last but not least, c'est le contrôleur de order.rb:
class OrderController < ApplicationController
# GET /orders
# GET /orders.xml
def index
@orders = order.all
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @orders }
end
end
# GET /orders/1
# GET /orders/1.xml
def show
@order = order.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @order }
end
end
# GET /orders/new
# GET /orders/new.xml
def new
@order = order.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @order }
end
end
# GET /orders/1/edit
def edit
@order = order.find(params[:id])
end
# POST /orders
# POST /orders.xml
def create
@order = order.new(params[:order])
respond_to do |format|
if @order.save
flash[:notice] = 'order was successfully created.'
format.html { redirect_to(@order) }
format.xml { render :xml => @order, :status => :created, :location => @order }
else
format.html { render :action => "new" }
format.xml { render :xml => @order.errors, :status => :unprocessable_entity }
end
end
end
# PUT /orders/1
# PUT /orders/1.xml
def update
@order = order.find(params[:id])
respond_to do |format|
if @order.update_attributes(params[:order])
flash[:notice] = 'order was successfully updated.'
format.html { redirect_to(@order) }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @order.errors, :status => :unprocessable_entity }
end
end
end
# DELETE /orders/1
# DELETE /orders/1.xml
def destroy
@order = order.find(params[:id])
@order.destroy
respond_to do |format|
format.html { redirect_to(orders_url) }
format.xml { head :ok }
end
end
end
Et ceci est l'erreur de RoR:
appelé id pour nul, ce qui serait être à tort, 4 - si vous avez vraiment voulait l'ID de néant, l'utilisation object_id
Avez-vous vérifié vos itinéraires? params [: id] est simplement nul. –
mon autre objet fonctionne bien. seulement la "commande" ne peut pas – DNB5brims