Ruby on rails 构造链接到控制器中自定义方法的路径
我在OrdersController中有一个非标准方法listByName,如下所示Ruby on rails 构造链接到控制器中自定义方法的路径,ruby-on-rails,model-view-controller,routes,Ruby On Rails,Model View Controller,Routes,我在OrdersController中有一个非标准方法listByName,如下所示 class OrdersController < ApplicationController def index @orders=Order.all end def listByName(name) @orders=Order.find_by(:name=>name) render index
class OrdersController < ApplicationController
def index
@orders=Order.all
end
def listByName(name)
@orders=Order.find_by(:name=>name)
render index
end
end
class OrdersControllername)查找
渲染索引
结束
结束
我想创建一些可以路由到OrdersController#listByName方法的链接
<%= link_to 'listByName', listByName_path %>
我的问题是如何在html.erb页面中构造路径,以及如何编写router.rb?
谢谢请参阅。您的问题在1.1和1.2中得到了回答
1.1当Rails应用程序收到以下传入请求时,将URL连接到代码:
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
。这降低了成本
视图的脆弱性使代码更容易理解。
请注意,不需要在route helper中指定id
你反对这里的习俗有什么原因吗?使用带有排序参数的
index
方法,不要使用驼峰大小写命名Ruby方法和变量(使用snake大小写)。问题是我不知道路径应该是什么,例如
中的方法患者路径
。请参阅:上面的1.2和链接文档中的3.6。