2013-10-09 52 views
0

我在我的中有記錄提交者模型顯示在應用程序索引視圖顯示在下面的表中。只有我希望能夠點擊.count()列出的號碼,並將其帶到我的票務指數視圖,並列出所有相應的記錄(票證)。Rails link_to實例變量的記錄.count()結果

我很難理解如何將實例變量鏈接到控制器的操作,以便使用我的視圖的佈局。

任何想法?

<table> 
    <tr> 
    <th>Name</th> 
    <th>Number of Tickets</th> 
    </th> 
    <tr> 
    <% Submitter.where(:school_id => current_user.school_id, :disabled => false).each do |sub| %> 
    <td><%= link_to sub.full_name, edit_submitter_path(sub) %></td> 
    <td><%= Ticket.where(:submitter_id => sub).count %></td> 
    </tr> 
    <% end %> 
</table> 

的routes.rb

resources :feedbacks 
resources :products 

get "password_resets/new" 
get 'signup', to: 'users#new', as: 'signup' 
get 'login', to: 'sessions#new', as: 'login' 
get 'logout', to: 'sessions#destroy', as: 'logout' 

resources :users 
resources :sessions 
resources :password_resets 
resources :mailing_lists 
resources :submitters 
resources :emails 
resources :notes 
resources :reminders 
resources :descriptions 
resources :issues 
resources :locations 
resources :schools 
resources :tickets 

root :to => "application#index" 

回答

0

像這樣的事情可能?不是100%理解你的問題。

<table> 
    <tr> 
    <th>Name</th> 
    <th>Number of Tickets</th> 
    </th> 
    <tr> 
    <% Submitter.where(:school_id => current_user.school_id, :disabled => false).each do |sub| %> 
     <td><%= link_to sub.full_name, edit_submitter_path(sub) %></td> 
     <td><%= link_to pluralize(sub.tickets.count, 'ticket'), tickets_path %></td> 
    <% end %> 
    </tr> 
</table> 

我,當然,不能給你完美的工作代碼,除非我知道你config/routes.rb是什麼樣子,因爲我不知道什麼是你的門票索引視圖的方法。

+0

對不起,如果我不清楚。不知道該怎麼說。這是正確的方向。但是,當我點擊這些時,它會加載localhost:3000/tickets。* insert_random_number_here *這顯然只是一個空白頁面。我的** config/routes.rb **是標準的。爲了進一步解釋,如果count()返回4.我願意點擊數字4並顯示這4條記錄。 – Devin

+0

我不知道你的'config/routes.rb'是什麼意思,因爲我不知道它應該是什麼。 'ticket_path'是否需要通過用戶? –

+0

您可以通過張貼您的路線讓我們的生活更輕鬆:) –

1

聽起來好像你有一個提交者有很多票。如果是這樣,你會顯示一個提交者列表(在submitters_controller#index方法中)並計算票數。然後將該號碼鏈接到tickets_controller#index方法。像這樣...

的routes.rb

resources :submitters do 
    resources :tickets 
end 

submitters_controller.rb

class SubmittersController < ApplicationController 

    def index 
    @submitters = Submitter.where(:school_id => current_user.school_id, :disabled => false) 
    end 

end 

tickets_controller.rb

class TicketsController < ApplicationController 

    def index 
    @submitter = Submitter.find(params[:submitter_id]) 
    @tickets = @submitter.tickets 
    end 

end 

的意見/匯交/ index.html.erb

<table> 
    <tr> 
    <th>Name</th> 
    <th>Number of Tickets</th> 
    </th> 
    <% @submitters.each do |sub| %> 
    <tr> 
     <td><%= link_to sub.full_name, edit_submitter_path(sub) %></td> 
     <td><%= link_to pluralize(sub.tickets.count, 'ticket'), submitter_tickets_path(sub) %></td> 
    </tr> 
    <% end %> 
</table> 

的意見/票/ index.html.erb

# This would show a list of tickets and their attributes - possibly linking to a ticket. 
+0

謝謝,但我在我的應用程序索引中顯示提交者和票號的列表,然後將它們鏈接到票證索引。我覺得這改變了你所擁有的東西。 – Devin

+0

這是一個微小的變化,但值得。如果您正在顯示提交者列表,則應該在submitters_controller中進行。這是指數的作用。這是寧靜的,值得遵循這種模式。 Rails鼓勵你這樣做,如果你遵循rails慣例,你會發現你的項目會更順利地發展。您應該能夠從應用程序控制器剪切並粘貼您的索引方法,然後鏈接到/ submitters url。 – Swards

+0

感謝您的解釋。我的推理更多是因爲設計方面而不是功能方面。然而,爲了測試我像你一樣設置它,它似乎會工作並加載/ submitter/{submitter_id} /門票網址,但只顯示我的常規索引頁面。我猜是因爲我之前已經有了@tickets。 '@tickets = paginate.where(:school_id => @ current_user.school_id).order(sort_column +「」+ sort_direction).search(params [:search])'我怎樣才能讓它使用不同的動作或實例變量? – Devin