2017-01-15 101 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

相關問題