2016-04-09 31 views
0

我在我的視圖或我的路線中遇到了link_to代碼問題。我試圖從視圖中傳入非主鍵值,並使用該值進行查詢。無論我做什麼,rails總是隻將該表的id作爲其唯一參數。Rails 4路由除了以下值:id

這是我的看法

<td> <%= link_to c.app_version_id, compliance_suite_path(:app_version_id => c.app_version_id) %></td> 

我的路線

resources :suites, :only => [:index] do 
member do 
    get 'report' 
end 
    member do 
    get 'compliance', param: :app_version_id 
end 

如果我做一個耙路線,我得到

compliance_suite GET /套/:ID /合規(。:format)suites#compliance {:param =>:app_version_id}

這裏是我的控制器,它現在只是試圖查看嬰兒車名單

 def compliance 

    Rails.logger.info "***********PARAMS PARAMS *******************" 
    Rails.logger.info {params.inspect} 
    end 

我有在控制器使用其他方法:ID我只有這個方法我想用另外的價值一個應用程序版本ID來做一個查詢。所以我不希望整個控制器只用1個方法來使用這個其他ID。我想要的價值在我看來可以在我的桌子上看到。在我的控制器中,它始終是:id,從來沒有app_version_id。

它是我的路線還是我的link_to?

+0

你加':app_version_id'在控制器允許PARAMS? – lusketeer

回答

1

因爲你的路由是嵌套的成員路由,所以rails需要父節點的id。你並不需要在你的路線中包含params子句。通過在路線中包含app_version_id來更改路線以反映您的意圖會更好。

的routes.rb

get 'suite/:app_version_id/compliance', to: 'suites#compliance', as: 'compliance_suite' 
+0

因此,我需要拉開我的路線,因此合規路徑沒有嵌套? – ducati1212

+0

它取決於控制器操作是否需要父實例 - 這將是一種方法。那麼你的鏈接將包含app_version_id作爲唯一的參數。我所包含的代碼將使用現有的路線減去參數條款,即成員做到合規結束。 – margo

+0

所以重新讀取後,我把它放回嵌套路由的方式,並通過我的link_to傳遞了2個值,然後我得到了app_version,但它想要自動使用URL中的:id這樣的重定向 - > GET GET「/suites/13/compliance?app_version_id = 9「 - 13是應用程序ID應用程序版本ID是9.我沒有代碼來從控制器重定向,所以我的猜測是路線那麼做?我可以改正,我想這個/套房/ 9 /法規 - 基於app_version_id – ducati1212