我是rails的新手,我正在尝试创建一个只列出问题和答案的帮助页面。目前我有一些非常简单的东西:
<% @helps.each do |help| %>
<%=h help.category %>
<%=h help.question %>
<%=h help.answer %>
<% end %>
每个问题和答案都是他们所属的类别。如何创建一个下拉列表,让用户只列出属于一个类别的问题?
其次,我想在页面顶部附近创建所有问题的列表。这些问题实际上是点击时的链接,将您带到问题/答案所在页面的底部。或者当点击链接时,它会扩展提供下面的答案,类似于facebooks帮助页面。我认为这将涉及ajax或java。如果有人能指出我正确的方向,那就太棒了。
答案 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 %>