rails 中的默认路线
default route in rails
我在写rails代码的时候有过疑问。
在我的 link_to
中,我使用我的路线 order
来显示我的订单。所以:
<% @orders.each do |order| %>
<tr>
<th><%= order.name %></th>
<th><%= link_to 'Mostra', order %></th>
</tr>
<% end %>
我看到了我的佣金路线并且有一个:
order GET /orders/:id(.:format) orders#show
如果我没记错的话,我用脚手架生成了 Order 资源。但是,当我手动创建新资源时(不使用脚手架)
我的资源有不同的路线。例如,我有类似 name_resource_show(:id)
的节目。这种风格很好,因为我知道如果我想查看特定资源,我必须传递 id 。但是在之前的情况下,order
的情况下,我真的不知道rails是如何理解使用对象顺序的id的。并且:
为什么我有不同的路线名称?为什么我有时 _path
有时(也许当我用脚手架生成资源时)其他东西?
我希望像 order_show(:id)
而不仅仅是 order
。
它是如何工作的?
首先,我建议遵循 Rails 路由约定(参见 main reference article here)。
以下是按顺序回答您的问题。
- 您从
rake routes
获得的路线具有以下意义。看看 URL (orders/:id
)。在您的所有订单中,传递的 :id
指定要查看的订单。 GET
请求的性质表明您正在获取该记录上的数据,即它是一个 SHOW 操作。
- Rails 了解 ID 的位置,因为路由是如何构建的。如果你在路由中有
order GET /orders/:year/:id
,那么 Rails 就会知道寻找它需要的 ID 的第三个参数。
- 两个用于访问路由的选项是
_path
和 _url
(see here for details),但在我在顶部链接的主要参考文章中解释了一些备选方案。
- 您仍然可以使用显式路由,但是
order
选项只是一点点糖 Rails 提供让事情更容易阅读。
Rails 帮助者足够聪明,可以使用模型对象来形成 url.
<%= link_to 'Mostra', order %>
等同于<%= link_to 'Mostra', order_path(order) %>
,都指向订单展示页面。
这将为您的控制器命令生成 7 条路线。
resources :orders
order GET /orders/:id orders#show
这里order是它提供的调用路由的辅助方法,而不是使用/orders/:id。
你可以简单地使用order_path(order)来获取路线/orders/:id
同样,我们得到了所有 7 条路线的助手。您还可以覆盖助手。
转至下方 link 了解更多信息。
我在写rails代码的时候有过疑问。
在我的 link_to
中,我使用我的路线 order
来显示我的订单。所以:
<% @orders.each do |order| %>
<tr>
<th><%= order.name %></th>
<th><%= link_to 'Mostra', order %></th>
</tr>
<% end %>
我看到了我的佣金路线并且有一个:
order GET /orders/:id(.:format) orders#show
如果我没记错的话,我用脚手架生成了 Order 资源。但是,当我手动创建新资源时(不使用脚手架)
我的资源有不同的路线。例如,我有类似 name_resource_show(:id)
的节目。这种风格很好,因为我知道如果我想查看特定资源,我必须传递 id 。但是在之前的情况下,order
的情况下,我真的不知道rails是如何理解使用对象顺序的id的。并且:
为什么我有不同的路线名称?为什么我有时 _path
有时(也许当我用脚手架生成资源时)其他东西?
我希望像 order_show(:id)
而不仅仅是 order
。
它是如何工作的?
首先,我建议遵循 Rails 路由约定(参见 main reference article here)。
以下是按顺序回答您的问题。
- 您从
rake routes
获得的路线具有以下意义。看看 URL (orders/:id
)。在您的所有订单中,传递的:id
指定要查看的订单。GET
请求的性质表明您正在获取该记录上的数据,即它是一个 SHOW 操作。 - Rails 了解 ID 的位置,因为路由是如何构建的。如果你在路由中有
order GET /orders/:year/:id
,那么 Rails 就会知道寻找它需要的 ID 的第三个参数。 - 两个用于访问路由的选项是
_path
和_url
(see here for details),但在我在顶部链接的主要参考文章中解释了一些备选方案。 - 您仍然可以使用显式路由,但是
order
选项只是一点点糖 Rails 提供让事情更容易阅读。
Rails 帮助者足够聪明,可以使用模型对象来形成 url.
<%= link_to 'Mostra', order %>
等同于<%= link_to 'Mostra', order_path(order) %>
,都指向订单展示页面。
这将为您的控制器命令生成 7 条路线。
resources :orders
order GET /orders/:id orders#show
这里order是它提供的调用路由的辅助方法,而不是使用/orders/:id。
你可以简单地使用order_path(order)来获取路线/orders/:id
同样,我们得到了所有 7 条路线的助手。您还可以覆盖助手。
转至下方 link 了解更多信息。