- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 rails 3 并且我有两个模型, field 和区域,其中每个区域都有许多 field ,每个 field 属于一个区域。
我试图找到一种方法,通过在同一页面的下拉框中选择的区域来过滤 field 索引中显示的 field 记录。
下拉框当前显示我所有的区域记录,但在选择一个区域并单击提交按钮后,我希望重新加载索引页面,并且只显示与在下拉框。
当在 Rails 控制台中调用或通过将 Controller 中的 def 索引更改为 @venues = Venue.north/venue.south/venue.west 时,我在模型中拥有的范围会显示正确的 field 。我只是想不出一种方法让所有 field 都显示为默认值,但是然后根据从表单中选择的区域来调用每个范围。
在这一点上,我不介意使用 AJAX,我只想了解如何以尽可能简单的方式完成它,而不使用 sphinx/thinking_sphinx。
模型:
class Venue < ActiveRecord::Base
belongs_to :user
has_many :reviews
belongs_to :area
scope :north, where(:area_id => "2")
scope :west, where(:area_id => "3")
scope :south, where(:area_id => "4")
end
<div class="filter_options_container">
<form class="filter_form">
<%= select("area", "area_id", Area.all.map {|a| [a.name, a.id] }) %>
<input type="submit" value="Filter" />
</form>
</div>
<div class="venue_partials_container">
<%= render :partial => 'venue', :collection => @venues %>
</div>
class VenuesController < ApplicationController
def index
@venues = Venue.all
end
end
最佳答案
您可以根据是否选择了区域,在 Controller 中找到 field 。
您可以修改 View 以发送区域名称,而不是区域 id(这可能会更容易):
<%= select("area", "name", Area.all.collect(&:name)) %>
Controller 看起来像这样 -
def index
if (params[:area] && Area.all.collect(&:name).include?(params[:area][:name]))
@venues = Venue.send(params[:area][:name].downcase)
else
@venues = Venue.all
end
end
关于ruby-on-rails - 从下拉列表中过滤索引页面上的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4846383/
我是一名优秀的程序员,十分优秀!