【问题标题】:How do I add/remove values to a collection_select (Drop-Down List) in Rails?如何向 Rails 中的 collection_select(下拉列表)添加/删除值?
【发布时间】:2014-09-04 20:57:00
【问题描述】:

我正在寻找一些关于如何在我的下拉列表中添加和删除值的指导。

这是我在 View/Project/_form.html.erb 中使用的代码

<div class="control-group">
 <%= vf.label(:category_id, :class => "control-label") %>
 <div class="controls">
 <%= vf.collection_select :category_id, Category.all, :id, :name, prompt: true %>
 </div>
</div>

它正在检索我在seeds.rb 中提供的值列表

Rails 中是否有一种添加某种“新值”选择的好方法,可以让我输入一些文本并将其保存到下拉列表中?

现在我不想在代码中添加一些额外的静态值。这对于用户在使用应用程序时能够在表单中输入附加值更有利。

我猜这将涉及某种JQUERY Dialog BoxAJAX 电话,但我希望能走运。

无论哪种方式,任何形式的帮助或示例都将不胜感激。

【问题讨论】:

  • 您能否按照我的回答完成这项工作?您需要其他帮助吗?
  • 我现在正试图弄清楚。我会尽快通知你。谢谢。

标签: jquery ruby-on-rails ajax ruby-on-rails-3.2


【解决方案1】:

我会在页面中添加一个辅助表单,如下所示:

form_for @category, remote: true, :url => {:action => "add_category"} do |f|
  f.text_field :category_name
  f.submit "Add category"

在您的控制器中,您将处理远程表单并呈现一个 JavaScript 模板来更新您的选择框。比如:

def add_category
  Category.create(category_params)
  respond_to do |format|
    format.js
  end
end

然后你会有一个 add_category.js 视图:

$(".controls").html("<%= j (render 'category_selects') %>");

最后,您需要创建 'category_selects' 部分来更新选择值:

<%= collection_select :category_id, Category.all, :id, :name, prompt: true %>

如果您还没有,我建议您阅读“使用 JavaScript”rails 指南:http://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html

希望这会有所帮助!

【讨论】:

  • 仍有一些问题。使用我的辅助表单在视图中获取undefined method 'model_name' for NilClass:Class。将发布代码。
  • 我正在标记这个答案,因为我一直在查看“使用 JavaScript”rails 指南:您推荐并让我的数据与该示例一起使用。我可以从这里弄清楚如何将其应用于collection_select
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-29
相关资源
最近更新 更多