I'm not sure if I understood you correctly. I assume you have a route like this:
resources :inventories do
resources :orders
end
If so you could use a before filter to automatically load the inventory in your
OrdersController before every action like this:
class OrdersController < ApplicationController
def inventory
@inventory ||= Inventory.find(params[:inventory_id])
end
before_filter :inventory
def new
@order = inventory.orders.build
end
def create
@order = inventory.order.build(params[:order])
if @order.save
flash[:success] = 'Order created successfully'
logger.debug " order saved successfully"
redirect_to inventory
else
logger.debug " order not saved"
render :new
end
end
end
As you can see I simplified your create Action, since you don't use anything
else than html in the response you can skip the `respond_to`. `redirect_to
inventory` is short for `redirect_to inventory_path(inventory)`, and `render
:new` is a shortcut for `render :action => 'new'`.
I hope I could help, if not please don't hesitate to ask again.
Regards, Jens
On Freitag, 6. Mai 2011 at 22:29, Mlle wrote:
def new
> @order = @inventory.orders.build
> end
>
>
> def create
> @order = Order.new(params[:order])
> @order.inventory_id = params[:inventory_id]
>
> respond_to do |format|
> if @order.save
> flash[:success] = 'Order created successfully'
> logger.debug " order saved successfully"
> format.html { redirect_to
> inventory_path(@order.inventory_id) }
> else
> logger.debug " order not saved"
> format.html { render :action => "new" }
> end
> end
>
> end
>
> def get_inventory
> @inventory = Inventory.find(params[:inventory_id])
> end
--
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.