2017-01-15 67 views
0

我在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

有没有理由在这里违背约定?使用带有排序参数的'index'方法,并且不要用骆驼大小写来命名Ruby方法和变量(使用snake大小写)。 – coreyward

回答

0

请参阅the routing guide。你的问题在1.1和1.2中得到解答。

1.1连接网址代码当Rails应用程序接收到用于进入的请求:

GET /patients/17 

它要求路由器以匹配到控制器 动作。如果第一个匹配的路由是:

get '/patients/:id', to: 'patients#show' 

请求params中分派到 病人控制器的演出行动{ 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不需要在路由帮助器中指定。

+0

问题是我不知道路径应该是什么,例如,这里的''%link_to ...%>''中的方法'patient_path'。 –

+0

请参阅:上述1.2和链接文档中的3.6。 – coreyward

相关问题