加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 从下拉列表中过滤索引页面上的结果

发布时间:2020-12-16 22:56:58 所属栏目:百科 来源:网络整理
导读:我正在使用轨道3,我有两个模型,场地和区域,每个区域有许多场地,每个场地属于一个区域. 我正在尝试找到一种方法来过滤场地索引中显示的场地记录,在同一页面的下拉框中选择了哪个区域. 下拉框当前显示我想要的所有区域记录,但在选择区域并单击提交按钮后,我希
我正在使用轨道3,我有两个模型,场地和区域,每个区域有许多场地,每个场地属于一个区域.

我正在尝试找到一种方法来过滤场地索引中显示的场地记录,在同一页面的下拉框中选择了哪个区域.

下拉框当前显示我想要的所有区域记录,但在选择区域并单击提交按钮后,我希望索引页面重新加载,并且仅显示场地记录的部分区域,其区域与在下拉框.

我在模型中的示波器在rails控制台中调用时显示正确的场地,或者通过将控制器中的def索引更改为@venues = Venue.north / venue.south / venue.west.我只是想办法让所有场地都显示为默认值,然后根据从表格中选择的区域调用每个范围.

在这一点上我并不打算使用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

查看:(场地index.html.erb)

<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

任何帮助深表感谢.

解决方法

您可以在控制器中找到场地,具体取决于是否选择了区域.
您可以修改视图以发送区域名称,而不是区域ID(这可能会使其更容易):

<%= select("area","name",Area.all.collect(&:name)) %>

控制器看起来像这样 –


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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读