【问题标题】:Rails: dropdown menuRails:下拉菜单
【发布时间】:2012-06-29 15:56:49
【问题描述】:

环境:Rails 3.2.3

我正在编辑这个问题以包含帮助模块的源代码,以及此处的建议:

这是我第一次尝试在 Rails 应用程序中创建下拉菜单。我尝试寻求有关该主题的帮助,但复杂的是术语下拉菜单用于实际的下拉菜单(页面菜单),以及问题中的下拉列表,表单选项,表单选择等是什么,以及论坛,让我很难找到我正在寻找的信息。

我找到了指向https://github.com/dkeskar/rails-jquery-dropdown 的指针,(源代码在帖子末尾)并按照说明下载了 jquery_dropdown_helper.rb:) 并将其放在 /lib 中

在我的 Gemfile 中,我有以下内容:

gem 'jquery-rails'

在 _header.html.erb 中,我有以下内容:

<% require 'jquery_dropdown_helper' %>
....
<%= hidden_field_tag :sort_criteria %>
<%= dropdown_tags :sort_criteria, 'Select Criteria',
    %w(Category Status Amount-High Amount-Low) %>

但这不起作用。这是我得到的错误代码:

undefined method `gsub' for :sort_criteria:Symbol

我查看了跟踪,似乎 jquery_dropdown_helper.rb 中的这一行是问题所在:

id = options[:id] || "#{field.gsub(/[[]\s]/, '-')}-selector"

有什么想法吗?

下拉菜单问题的解决方案

我正在寻找一种在我的 Rails 应用程序中使用下拉菜单的方法,但无法得到这个问题的答案。经过几天的研究,我确实找到了一个解决方案,使用 Twitter gem 'twitter-bootstrap-rails'。

将以下内容添加到您的 Gemfile:

gem 'twitter-bootstrap-rails'

将以下内容添加到您的 app/assets/javascripts/application.js

确保它的顺序是这样的:

//= require jquery
//= require jquery_ujs
//= require_tree .
//= require bootstrap

然后,在您想要下拉菜单的地方,添加以下内容:

          <ul class="nav nav-pills">
            <li class="dropdown" id="admin_menu">
              <a class="dropdown-toggle" data-toggle="dropdown" href="#admin_menu">
                ADMIN
              </a>
              <ul class="dropdown-menu">
                <% Admin_menu.each do |menu_text,menu_action| %>
                    <li><a href=" <%= menu_action %>"><%= menu_text %></a></li>
                <% end %>
              </ul>
            </li>
          </ul>

请注意,我有以下哈希:

Admin_menu = Hash.new
Admin_menu["Events"] = "events#index"
Admin_menu["Categories"] = "categories#index"
Admin_menu["Panels"] = "panels#index"  

假设您有以下内容的脚手架:事件、类别和面板,它应该都可以工作

【问题讨论】:

  • 你定义过 sort_criteria 吗?
  • 它在我的问题中的链接指向的 jquery_dropdown_helper.rb 中定义
  • 不...仔细检查源
  • 请参阅第二个答案中的讨论:hidden_​​field_tag 是 Rails 辅助方法,允许我将 sort_criteria 添加为表单元素。

标签: ruby-on-rails drop-down-menu menu


【解决方案1】:

jquery_dropdown_helper.rb 不提供名为 sort_criteria 的方法。我认为示例应该是:

<% require 'jquery_dropdown_helper' %>
....
<%= hidden_field_tag :sort_criteria %>
<%= dropdown_tags :sort_criteria, 'Select Criteria',
    %w(Category Status Amount-High Amount-Low) %>

:sort_criteria 只是表单元素的名称,可以是符号或字符串(即 :sort_criteria 或 'sort_criteria')

【讨论】:

  • 是的,当然,我添加评论的速度太快了。 hidden_​​field_tag 是一个 Rails 辅助方法,它允许我向请求中添加一个字段,在本例中为 sort_criteria。我做了你建议的修改(添加:),但现在我收到以下错误:undefined method `gsub' for :sort_criteria:Symbol
  • 我查看了跟踪,似乎 jquery_dropdown_helper.rb 中的这一行是问题:id = options[:id] || "#{field.gsub(/[[]\s]/, '-')}-选择器"
  • 这不可能是一个符号,因为 gsub 不是一个符号。作为一个字符串,它确实有效,但我下载的实际库不起作用。而不是我期望看到的下拉菜单,我得到以下内容: 管理 .... ......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-12
  • 2023-03-30
  • 2018-01-27
  • 2012-07-29
  • 2017-08-28
  • 2011-10-31
相关资源
最近更新 更多