1. can you post the full error message and what you did to get it
2. 

def get_inventory
@inventory = Inventory.find(params[:inventory_id])
end

should_be 

def inventory
@inventory ||= Inventory.find(params[:inventory_id])
end

the the Inventory is cached if you need it multiple time during one request. 
Leaving the `get_` is more like ruby and rails work on attribute accessors. And 
if you cache the inventory you can get rid of the @ in front of any other call 
to the inventory, just use the defined accessor method.

You can even get rid of the before filter if you use the `inventory` accessor, 
so the inventory only get's loaded if you really need it. 
On Freitag, 6. Mai 2011 at 23:11, Mlle wrote:
hmm now I get Only get, put, and delete requests are allowed.
> 
> This is in my routes:
> 
>  map.resources :inventories do |inventory|
>  inventory.resources :orders
>  end
>  map.resources :orders
> 
> And this is my controller:
> 
>  before_filter :login_required, :get_inventory
> 
>  def new
>  @order = @inventory.orders.build
>  end
> 
> 
>  def create
>  @order = @inventory.orders.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
> 
>  def get_inventory
>  @inventory = Inventory.find(params[:inventory_id])
>  end
> end
> 
> 
> On May 6, 4:59 pm, Jens Fahnenbruck <[email protected]> wrote:
> > The routes description is different in rails 2.3.5
> > 
> > map.resources :inventories do |inventory|
> > inventory.resources :orders
> > end
> > 
> > The rest should work as described.
> > On Freitag, 6. Mai 2011 at 22:56, Mlle wrote:
> > Oh, I should have mentioned that I'm using Rails 2.3.5. I'm not sure
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > > if that makes a difference?
> > > I'll try out what you suggested, thanks!
> > 
> > > On May 6, 4:51 pm, Jens Fahnenbruck <[email protected]> wrote:
> > > > @order = inventory.order.build(params[:order])
> > 
> > > > should be
> > 
> > > > @order = inventory.orders.build(params[:order])
> > > > On Freitag, 6. Mai 2011 at 22:50, Jens Fahnenbruck wrote:
> > > > 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 
> > > athttp://groups.google.com/group/rubyonrails-talk?hl=en.
> 
> -- 
> 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.
> 

-- 
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.

Reply via email to