簡體   English   中英

Rails初學者-如何定義3個使用戶做出選擇的按鈕?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM