开发者

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 o开发者_JS百科rder 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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜