Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
621 views
in Technique[技术] by (71.8m points)

ruby - 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?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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  

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...