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.

