Ruby on rails RubyonRails在URL中传递参数

Ruby on rails RubyonRails在URL中传递参数,ruby-on-rails,routes,Ruby On Rails,Routes,这可能是一个非常简单的修复方法,但我还没有找到答案 我的应用程序有命令和任务。订单有很多任务。当用户在“显示订单”视图中单击“新建任务”时,会传递订单id: <%= link_to "New Task", new_task_path(:order_id=> @order.id) %> 我只是不知道如何提取这个并在我的表格中使用它?我试过: <%= f.text_field :order_id, :value => @order_id %> @order\u

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

我的应用程序有命令和任务。订单有很多任务。当用户在“显示订单”视图中单击“新建任务”时,会传递订单id:

<%= link_to "New Task", new_task_path(:order_id=> @order.id) %>
我只是不知道如何提取这个并在我的表格中使用它?我试过:

<%= f.text_field :order_id, :value => @order_id %>
@order\u id%>
但它不起作用。

你:

params[:order\u id]>

或者,捕获值(使用
params
)并将其分配给那里的
@order\u id

您这样做是错误的,这在Rails中是一个大问题,约定优于配置是一个非常重要的理想

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

/orders/:order_id/tasks/new
并且您的路线应配置为:

resources :orders do
  resources :tasks
end

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

键入
:value=>@order\u id
。它不应该是
:value=>@order.id
?但最好将其设为隐藏字段:@Jenny请查看我的答案。在Rails中这样做绝对是错误的。嵌套资源并不总是合适的。有些人认为他们永远都不合适,但我不想在这里开始争论。即使您认为它们有时是合适的,但从问题中也无法100%清楚地看出,任务订单是一种所有权关系,而不是关联关系。我同意这是一个好的选择,但我反对将其他选项称为“在Rails中这样做绝对是错误的”,引用您的其他评论。例如,考虑一个“订单”是否是一个任务的可选字段。
/orders/:order_id/tasks/new
resources :orders do
  resources :tasks
end