我在OrdersController中有一个非标准方法 listByName ,如下所示。
class OrdersController < ApplicationController
def index
@orders=Order.all
end
def listByName(name)
@orders=Order.find_by(:name=>name)
render index
end
end
我想创建一些可以路由到OrdersController#listByName方法的链接。
<%= link_to 'listByName', listByName_path %>
我的问题是如何在 html.erb 页面中构建路径,以及如何编写router.rb? 谢谢
答案 0 :(得分:0)
见the routing guide。您的问题在1.1和1.2中得到了解答。
1.1将URL连接到代码当Rails应用程序收到传入的请求时:
GET /patients/17
它要求路由器将其与控制器匹配 行动。如果第一个匹配的路线是:
get '/patients/:id', to: 'patients#show'
请求被分派到 患者控制器用
{ id: '17' }
表示行动。1.2从代码生成路径和URL您还可以生成路径和URL。如果上述路线被修改为:
get '/patients/:id', to: 'patients#show', as: 'patient'
并且您的应用程序在控制器中包含此代码:
@patient = Patient.find(17)
并在相应的视图中:
<%= link_to 'Patient Record', patient_path(@patient) %> then the
路由器将生成路径
/patients/17
。这减少了 您的视图脆弱,使您的代码更容易理解。 请注意,不需要在路径助手中指定id。