2012-07-04 48 views
0

我創建了一個收集模型(稱爲NISMO)的所有條目與所選字母/數字開頭的函數:link_to功能?功能新視圖?

​​3210

我有這樣我的「NISMO」控制器內。

在我的Nismo控制器的索引視圖中,我有一個字母菜單,我想用它來允許用戶選擇,例如「B」。這將運行showByLetter函數,然後在頁面中顯示所有以該字母開頭的條目。

我的問題是,在我的索引頁我真的不知道如何讓這一切發生:

<% Array('A' .. 'Z').each do |letter| %> 
    <%= link_to letter, showByLetter(letter) %> 
<% end %> 

我猜我需要爲此創造一個新的view.html.erb文件「showByLetter」函數來顯示它的結果。

我試圖讓我的頭從程序員程序員的書中看到它,並且看到網絡上的評論可能意味着我需要使用routes.rb文件來添加以添加東西喜歡得到正確的路線:

namespace "nismo" do 
    resources :nismos do 
     member do 
      get :showByLetter 
     end 
    end 
end 

我相信這一切都很簡單,但我很困惑,需要一些指針。

任何幫助將不勝感激!

感謝

亞當

回答

1

坦率地說,這樣做是在「NISMO」控制器中的索引操作最簡單的方法。你可以做的是改變

<%= link_to letter, showByLetter(letter) %> 

<%= link_to letter, nismos_path(:letter => letter) %> 

這樣做是創建一個鏈接回當前索引頁,並將它類似於

yourrooturl.com/nismos?letter=A 

而一個GET paramater那麼在Nismo控制器的索引操作中,只需添加一個if語句以確定是應該加載所有nismos還是僅加載該字母。類似的東西:

if params[:letter].nil? 
    @nismos = Nismo.all 
else 
    @nismos = Nismo.all :conditions => ['substr(name,1,1) = ?', params[:letter]] 
end 

這應該解決您的問題,你將不必處理路線。