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?
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
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With