繁体   English   中英

Rails 4-如何在一个视图中保存来自不同下拉菜单的选择并将其传递给控制器​​以接收相应的数据

[英]Rails 4 - How to save selections from different dropdown menus in one view and passing them to controller to receive corresponding data

我是Rails的新手,刚刚开始创建我的第一个应用程序。 这个问题听起来有点奇怪。

所以我有两个下拉菜单,年份和地区,它们每个都有一些选择。 我有一个articles控制器和模型来存储一些信息。 我正在尝试使此操作有效:

首先从“ Year”中进行选择,例如2014年。我单击2014年后,我想显示2014年数据库中的所有articles

然后,虽然“年份”(Year)下拉菜单仍在2014年,但我在“地区”(Region)下拉菜单中进行了选择,例如US,并在视图中显示了属于2014和US的文章。

是否可以在不使用ajax的情况下完成以上所有操作?

这是我的articles/index查看代码

<!-- Region -->
<div class="dropdown">
  <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
    Region
    <span class="caret"></span>
  </button>
  <ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
    <li><%= link_to "All Regions", ?????_article_path(???) %></li>
    <% @articles.each do |article| %>
        <li>
            <%= link_to article.region, ?????_article_path(???)%>
        </li>
    <%end%>
  </ul>
</div>

<!-- Years -->
<div class="dropdown">
  <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
    Year
    <span class="caret"></span>
  </button>
  <ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
    <li><%= link_to "All Years", ?????_article_path(???) %></li>
    <% @articles.each do |article| %>
        <li>
            <%= link_to article.year, ?????_article_path(???)%>
        </li>
    <%end%>
  </ul>
</div>

这是我的ArticlesController ,它只有一个index方法

类ArticlesController <ApplicationController

def index
    @articles = Article.all
end

因此,我考虑过将另一种方法称为selection但是我不确定如何通过第二个下拉菜单的选择。

如果要主动从数据库中获取文章,则需要AJAX。 如果可以将文章和视图一起加载,可以将它们存储为预提取的JSON对象,如下所示:

<script>
   var articles = <%= raw @articles.to_json %>;alert(articles);
</script>

然后手动通过此JS对象。

提示:要对JS对象的显示和呈现有更多控制,请安装eleteger.js( http://backbonejs.org/ ),然后安装boost.js查询( https://github.com/davidgtonge/backbone_query )撰写文章骨干模型(骨架.js页面上的教程非常简单且实用),articles_collection骨干集合,以您想要的方式对其进行查询,然后通过Javascript编写HTML代码并将其粘贴到页面上。 我更喜欢使用Backbone.js underscore.js模板,它们是一个很好的掌握工具。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM