简体   繁体   中英

Ruby on Rails Passing Parameter In URL

This is probably a very simple fix but I've been unable to find an answer just yet.

My application has orders and tasks. Orders have many tasks. When a user clicks new task in the show order view, it passes the order.id:

<%= link_to "New Task", new_task_path(:order_id=> @order.id) %>

The url shows:

/tasks/new?order_id=1

I just don't know how to extract this and use it in my form? I have tried:

<%= f.text_field :order_id, :value => @order_id %>

But it's not working.

You can do :

<%= f.text_field :order_id, :value => params[:order_id] %>

Alternately, capture the value (with params ) in the controller and assign it to @order_id there.

You are doing this wrong, which is a big deal in Rails where convention-over-configuration is such an important ideal.

If an order has many tasks, your route should look like this:

/orders/:order_id/tasks/new

And your routes should be configured thusly:

resources :orders do
  resources :tasks
end

You should [almost] never find yourself passing around record ids in the query string. In fact, you should almost never find yourself using query strings at all in Rails.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM