[英]Rails Beginner - How to define 3 buttons enabling a user to make a choice?
我知道這是一個非常基本的問題,我們是Rails的新手,因此無法找到該問題的具體答案。
背景:我們只有一個數據庫,其中包含產品信息(稱為“產品”),一列(類型)包含有關產品類型的信息,值為1或2。
目的:在頁面上創建3個對應於不同用戶選擇的按鈕,例如按鈕1-顯示類型1的項目; 按鈕2-顯示類型2的項目; 按鈕3-顯示所有項目。
理想情況下,有關按下按鈕的信息應該在一個類中的許多頁面上可見(我們有一個索引頁面,以及控制器中的其他3個頁面)
有人可以提供執行此操作所需的代碼概述嗎? 我猜這是涉及..._ controller.rb和..._ helper.rb的某種組合?
非常感謝您的耐心配合
我要做的是以下幾點。
首先,在您的項目模型中創建一個范圍或named_scope以按類型查找項目。 然后,您將能夠使用此范圍根據類型查詢您的項目。
# Rails 3
class Project
scope :by_type, lambda{ |type| where(type: type.to_i) unless type.nil? }
end
#Rails 2
class Project
named_scope :by_type, lambda do |type|
{ :conditions => { :type => type.to_i } } unless type.nil?
end
end
接下來,在控制器中創建一個before過濾器以加載該類型的項目。 before過濾器應應用於您希望按鈕出現的所有頁面:
class ProjectsController
before_filter :load_projects, :only => [:index, :action1, :action2]
protected
def load_projects
@projects = Project.by_type(params[:type])
end
end
最后,為您可以包含在視圖中的按鈕創建部分按鈕,這些按鈕可以選擇顯示不同的項目類型:
# _project_options.html.erb
<%= link_to "Button 1", :controller => params[:controller], :action => params[:action], :type => '1' %>
<%= link_to "Button 2", :controller => params[:controller], :action => params[:action], :type => '2' %>
<%= link_to "Button 3", :controller => params[:controller], :action => params[:action], :type => '' %>
然后,您可以將此部分內容包括在每個相關視圖中。 您可以通過執行以下操作來顯示項目(如果定義了_projects.html.erb部分):
render @projects
您可以加載所有產品,然后使用一些javascript有選擇地隱藏它們。 只需為每種產品的標記添加一個類,如下所示:
<%= link_to @product.name, product_path(@product), :class => @product.type %>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.