Ruby on Rails在URL中传递参数

时间:2011-06-10 12:57:19

标签: ruby-on-rails routes

这可能是一个非常简单的修复,但我还没有找到答案。

我的申请有订单和任务。订单有很多任务。当用户在show order视图中单击新任务时,它会传递order.id:

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

网址显示:

/tasks/new?order_id=1

我只是不知道如何提取这个并在我的表单中使用它?我试过了:

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

但它不起作用。

2 个答案:

答案 0 :(得分:2)

can do

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

或者,捕获值(使用paramsin the controller并将其分配给@order_id

答案 1 :(得分:-1)

你做错了,这在Rails中是一个大不了的,其中约定配置是如此重要的理想。

如果订单包含许多任务,您的路线应如下所示:

/orders/:order_id/tasks/new

您的路线应该如此配置:

resources :orders do
  resources :tasks
end

你应该 [几乎]从不发现自己在查询字符串中传递记录ID。事实上,你几乎不会发现自己在Rails中使用查询字符串。