2013-10-17 59 views
0

新的鐵軌,我想知道解決這個問題的最佳方法。Rails鏈接問題數據庫

我有意見的索引,列表和結果頁:

我的路線文件有:

resources :pages do 
collection do 
    get :list 
    get :result 
end 
end 

我有一個MySQL數據庫,稱爲結果與ID,今年(2000年 - > 2013)產品名稱。

我的控制器有:

def index 
@years = Result.group('year').order('year DESC') 
end 

我的索引視圖有:

<table class="table"> 
<% @years.each do |year| %> 
<tr><td> 
<%= link_to year.year, list_pages_path %> 
</td></tr> 
<% end %> 
</table> 

其中列出了年內2000 - > 2013罰款,就是我想要它做的是鏈接到列表視圖並列出在上一個link_to索引中選擇的產品和年份(例如,2013年將列出數據庫中所有2013年的產品),然後鏈接到顯示更多產品信息的結果視圖。

乾杯

回答

0

可以實現對網頁模型的範圍,將在今年篩選:

class Pages < ActiveRecord::Base 
    scope :year, ->(year) { where(year: year) } 
end 

然後改變link_to發送查詢參數的一年:

link_to year.year, list_pages_path(year: year.year) 

最後,在控制器中

def list 
    @pages = Page.year(params[:year]) 
end 

您需要確保已經連接正確的操作 - 我認爲它將默認爲PagesController#year

此外,爲了徹底,您需要確保檢查輸入以防止SQL注入。也許是這樣的:

def list 
    @pages = Page.year(Integer(params[:year]) 
end 

這將拋出一個異常,如果params[:year]不能轉換爲整數。由於您不允許用戶在任何地方輸入參數,因此他們只會在惡意篡改該網址時纔會看到該例外情況。不過,你可能仍然想要更優雅地處理它。

+0

感謝您的快速響應。你的解決方案是一種享受。非常感謝! – Grinskull