帮助使用Ruby on Rails为FAQ页面创建下拉列表和其他元素

时间:2010-05-11 18:26:47

标签: ruby-on-rails ruby ajax

我是rails的新手,我正在尝试创建一个只列出问题和答案的帮助页面。目前我有一些非常简单的东西:

<% @helps.each do |help| %>
<%=h help.category %>
<%=h help.question %>
<%=h help.answer %>
<% end %>

每个问题和答案都是他们所属的类别。如何创建一个下拉列表,让用户只列出属于一个类别的问题?

其次,我想在页面顶部附近创建所有问题的列表。这些问题实际上是点击时的链接,将您带到问题/答案所在页面的底部。或者当点击链接时,它会扩展提供下面的答案,类似于facebooks帮助页面。我认为这将涉及ajax或java。如果有人能指出我正确的方向,那就太棒了。

2 个答案:

答案 0 :(得分:1)

您可以使用类似jquery的东西来切换各个部分的可见性 - 将每个类别放在div中,然后使用jquery隐藏它们。您还可以使用一些jquery插件(例如http://flowplayer.org/tools/demos/tabs/accordion.html)来实现效果,在这种情况下,是一个手风琴,但也存在许多其他此类效果。

我的第一个谷歌搜索发现:http://jquerystyle.com/2009/04/21/jquery-faq-plugin

答案 1 :(得分:0)

如果您想“静态地”执行此操作 - 也就是说,当用户从下拉列表中选择一个类别并单击“过滤器”时,浏览器会向Rails应用程序请求该类别中的问题,以下内容将帮助您入门:

# in config/routes.rb
map.resources :helps

# in app/models/help.rb
class Help
  named_scope :in_category, lambda { |category| { :conditions => { :category => category } } }
  def self.categories
    find(:all, :select => 'distinct category', :order => 'category').sort
  end
end

# in app/controllers/helps_controller.rb
class HelpsController < ApplicationController::Base
  def index
    @helps = if params[:category]
      Help.in_category(params[:category])
    else
      Help.all
    end
  end
end

# in app/views/helps/index.html.erb:
<% form_tag(helps_path) do %>
  <%= select_tag(:category, options_for_select(Help.categories, params[:category])) -%>
  <%= submit_tag('Filter') -%>
<% end %>
<% @helps.each do |help| %>
  <div class="help <%= help.category -%>">
    <%=h help.category %>
    <%=h help.question %>
    <%=h help.answer %>
  </div>
<% end %>