【问题标题】:Creating a simple drop-down menu in Rails在 Rails 中创建一个简单的下拉菜单
【发布时间】:2011-01-31 21:15:30
【问题描述】:

这看起来真的很简单,但由于某种原因,我错过了一些关键的东西。

我有一个看法:

<% form_for :foo, @foo, :url => {:action => 'bar'} do |f|%> 
  <%= f.collection_select :range, FooModel::MONTHS%>
  <%= submit_tag "Submit", :disable_with => "Submitting..." %>
<% end %>

我有一个模型:

class FooModel < ActiveRecord::Base
  MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep']
end

我有一个控制器:

def new
  @foo = FooModel.new
end

def index
  respond_to do |format|
    format.html # index.html.erb
  end
end

def bar
  if params[:foo]
    @foos = params[:foo].inspect
  end

  respond_to do |format|
    format.html # index.html.erb
  end
end

我的问题是,当单击“提交”按钮时,如何获取有关选择了哪个组合框元素的信息?它似乎不是 params[:foo]、@foo 或我能想到的任何其他东西。

更新 看起来我似乎应该调用 params[:range]?然而,那是零。

【问题讨论】:

    标签: ruby-on-rails form-for


    【解决方案1】:

    我认为您的代码可以简化为以这种方式工作:

    {:action => 'bar'} 做 |f| %> "提交中..." %>

    将collection_select 用于诸如此类的简单情况可能是矫枉过正。 f.select 应该足够了。

    【讨论】:

    • 改成这样,现在我得到:第一行的 NilClass:Class 的未定义方法 `model_name'。
    • 此代码在您的新操作中吗?如果没有,您可能想尝试用 FooModel.new 替换 @foo。
    • 啊哈,对了,我需要把它移到正确的位置。现在它告诉我我有一个未定义的方法 `select_tag' 用于 f.select_tag 行上的 #<:helpers::formbuilder:0x4dce8f0>
    • 更新了我的帖子。我使用的是 select_tag 而不是 select。我的错。
    • 改回来并更新它看起来像您的解决方案。在#<0x4bb6340>
    猜你喜欢
    • 1970-01-01
    • 2020-07-17
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    相关资源
    最近更新 更多