Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

rails - Pass id parameter on a link_to

I'm trying to pass the parameter of the current page(id) to the next page so I can create a dependent model entry.

i.e. Projects have bids, bids belong to projects.

So on the show page for a project I added the link

<%= link_to "New Bid", new_bid_path(@project) %> 

Which creates and performs the url.... "http://localhost:3000/bids/new.2"

I have

def new     @bid = Bid.new     @project =  Project.find(params[:id]) end 

in the bids controller but I keep getting the error "Couldn't find Project without an ID"

???

Whats going on, how come I can't pass the id?

like image 247
ChrisWesAllen Avatar asked Mar 11 '11 02:03

ChrisWesAllen


2 Answers

If your bids are not nested resource of the project, then you can add project_id as parameter to the path:

<%= link_to "New Bid", new_bid_path(:project => @project.id) %>

def new     @bid = Bid.new     @project =  Project.find(params[:project])   end 

otherwise:

#routes.rb  map.resources :projects do |project|     project.resources :bids end 

<%= link_to "New Bid", new_project_bid_path(@project) %>

def new     @project =  Project.find(params[:project_id])       @bid = @project.bids.build   end   
like image 147
BitOfUniverse Avatar answered Sep 17 '22 19:09

BitOfUniverse


A good approach to this kind of problems, its to see what are you sending with the params. This can be done with debug.

<%= debug params # or any variable%> 

With that information you will see (and learn) what kind of params are you sending to a controller.

like image 42
Gareve Avatar answered Sep 19 '22 19:09

Gareve