如何在Rails中向collection_select(下拉列表)添加/删除值?

时间:2014-09-04 20:57:01

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

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

以下是我在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是否有一种很好的方法可以添加某种新的价值&#34;选择,然后我可以输入一些文本并将其保存到下拉列表?

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

我猜这会涉及某种JQUERY Dialog BoxAJAX电话,但我希望能够幸运。

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

1 个答案:

答案 0 :(得分:0)

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

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”导轨指南:http://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html

希望这有帮助!