2017-10-13 35 views
0

我爲用戶創建了一個小型售票系統。我有新票,進行中和完成票。我希望能夠在頁面上切換是否已完成隱藏或顯示。做這個的最好方式是什麼?保存這些值的參數是ticket.statusRails 4過濾器索引列表與開關

在控制器:

def index 
    @tickets = Ticket.all 

    if params[:filter_by] 
     @tickets = Ticket.where(:category => params[:filter_by]) 
    else 
     @tickets = Ticket.all 
    end 
end 

在索引視圖:

<div> 
<div><%= link_to "Full Listing", tickets_path %></div> 
<div><%= link_to "Admin", tickets_path(:filter_by => :Administrative), {:method => :get} %></div> 
<div><%= link_to "Graphics", tickets_path(:filter_by => :Graphics), {:method => :get} %></div> 
<div><%= link_to "IT", tickets_path(:filter_by => :IT), {:method => :get} %></div> ||| 
<div><%= link_to "New entry", new_ticket_path %></div> ||| 
<div> 
    <% if current_user.present? %> 
    <%= link_to " Sign Out", sessions_path, method: :delete %> 
    <% end %> 
</div> 

+0

你能爲撥動本身提供的HTML? – AntonTkachov

+0

從查看我正在查看的html代碼,輸入將是一個複選框。從那開關只是穿衣。 – lostrennie

+0

你能更新你的代碼並且包含這個複選框嗎? – AntonTkachov

回答

0

你怎麼樣看看搜查,SimpleForm和SimpleFormRansack?這就是我構建我自己的大部分索引過濾器的方式。

https://github.com/activerecord-hackery/ransack

https://github.com/plataformatec/simple_form

https://github.com/kaspernj/simple_form_ransack

在你的控制器做這樣的事情:

def index 
    ransack_params = params[:q] || {} 
    ransack_params[:status_eq_any] ||= ["New"] 

    @ransack = Ticket.ransack(params[:q]) 
    @tickets = @ransack.result 
end 

在你看來,你可以做這樣的事情:

<%= simple_search_form_for @ransack do |f| %> 
    <%= f.input :category_eq_any, collection: ["Administrative", "Graphics", "IT"] %> 
    <%= f.input :status_eq_any, collection: ["New", "Completed"] %> 
    <%= f.button :submit %> 
<% end %> 

<% @tickets.each do |ticket| %> 
    ... 
<% end %> 

您還可以顯示像這樣的鏈接到預定義搜索:

<%= link_to "Admin", tickets_path(q: {status_eq: "Administrative"}) %> 
+0

這看起來非常有用!快速的問題,我總是希望類別的按鈕能夠正常工作,但我希望切換到隱藏/顯示已完成的票據,並且通過上面給出的設置,它會這樣做? – lostrennie