下面的代碼給出選擇複選框的用戶,誰可以從選擇檢查他們的收藏列表。一旦用戶對他們的選擇感到滿意(即收藏夾),他們可以點擊提交按鈕,並且將出現一個新的頁面,顯示僅包含他們選擇的收藏夾的過濾列表。
如果您想使用HTML提示,請查看我的應用程序Trendmyhunch(在my GitHub account上共享)的代碼。
第1步:更改您的index.html文件index.erb:
第2步:添加以下嵌入的Ruby到您的index.erb文件(視圖),加上自己的定製HTML:
<h2>Select Favourites:</h2>
<%= form_tag '/favourites#form', :name => 'form1', :method => 'get' do %> # http get request
<% @favs.each do |fav| %>
<%= fav.name, params[:fav_name] %> # create original list from data source
<% end %>
<% @favs.each do |fav| %>
<%= label_tag :filter, "" %>
<%= check_box_tag 'filter_values[]', fav.id, false %> # array of checkbox values
<%#= check_box(:accepted, 'false', selected:false) %>
<%= hidden_field_tag 'favourites_ids[]', fav.id %> # hidden array of values accessible across pages
<% end %>
<% end %>
<h2>Choose Next Action:</h2>
<%= form_tag '/favourites/show', :method => 'post' do %>
<% @favs.each do |fav| %> # same as previous hidden array allowing access to checkbox values
<%= hidden_field_tag 'favourites_ids[]', fav.id %> //
<% end %>
<% end %>
<%= submit_tag("Set Favourite", data: { disable_with: "Please wait.." }, class: "btn btn-primary") %><span class="help-block">Please press this button after selecting the items you wish to set as favourites.</span>
第3步:添加以下嵌入的Ruby到您的show.erb文件(視圖),加上自己的定製HTML:
<h2>Show Favourites:</h2>
<% @favs.each do |fav| %> # list the names of the checkboxes that were checked as favourites
<%= fav.name %>
<% end %>
第4步:添加以下到您的toogle_favourite.rb文件(控制器):
class ToogleFavouriteController < ApplicationController
def index
if params[:filter_values].present?
@favs = Favourite.where(:id => params[:filter_values]) # assign to a variable only the database id's of favourites that are selected as favourites in the list of checkboxes
@favs.toggle = true
elsif !params[:filter_values].present?
@favs = Favourite.all
end
end
def show
@favs = Favourite.where(:id => params[:favs_ids])
end
end
你可能不應該使用一個特定的控制器,只爲這一點。向代表你喜歡的東西的控制器添加一個'toggle_favourite'動作可能會更好。 –
那麼,你的問題是什麼?遇到特定問題的麻煩,或只需要它爲您編碼? – Warlord
也許你需要一個自由職業者 –