【问题标题】:Rails dropdown with "Others" option to be stored in same field带有“其他”选项的 Rails 下拉菜单存储在同一字段中
【发布时间】:2016-09-12 07:46:21
【问题描述】:

我有这样的表格

<% simple_form_for @user do |f| %>
  <%= f.select :organization_name, ["Apple", "Google", "Microsoft", "Others"] %>    
  <div id="custom_org_id hide">
    <%= f.input :organization_name, label: "Others" %>
  </div>
<% end %>

javascript

$('#user_organization_name').change(function() {
  $('#custom_org_id').removeClass('hide');
});

用户会看到一个下拉列表,其中包含可以选择和提交的组织名称。有一个“其他”选项,单击该选项会打开一个输入字段,用户可以在其中输入。 这里的问题是如果用户选择“其他”选项并在其中输入一些值,哪个值会存储在数据库中?因为如果您在上面观察,在下拉列表和输入字段中,属性名称是相同的,即

:organization_name

而且我不想为其他人设置单独的列。 我们怎样才能做到这一点

【问题讨论】:

  • 当最终用户选择从输入框中输入值时,在这种情况下您可以禁用选择框,它会阻止提交。
  • 是的,但我猜当用户从下拉菜单中选择“其他”时,该下拉菜单将保留为该字段的输入。虽然它被禁用并在用户提交时被提交。我不知道这是否是正确..我猜..如果这不正确,那么你说的有效..

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


【解决方案1】:

看看这是否有效:

<% simple_form_for @user do |f| %>
<div id="custom_org_id_select_menu">
    <%= f.select :organization_name, ["Apple", "Google", "Microsoft", "Others"] %>    
 </div>  

  <div id="custom_org_id hide">
    <%= f.input :organization_name, label: "Others" %>
  </div>
<% end %>


$( "#user_organization_name" ).keypress(function() {
    $('#custom_org_id_select_menu').removeClass();
});

一旦您开始在放置字段中输入“其他”,您的下拉菜单就会消失。如果您想要让它重新出现的选项,那么只需使用 jquery 再次构建它。

【讨论】:

  • 感谢您的回答...即使下拉列表消失了,下拉列表中的值仍然是“其他”。因此,当用户从下拉列表中选择“其他”并在输入字段中输入一些值时,该值将被存储.. 1)从下拉列表中选择“其他”或 2)在输入字段中输入值,因为两者都是为同属性(:organization_name)
  • @AdityaY 它应该是在输入字段中输入的值............但你必须检查以确保。我的理解是,选择菜单将基本上从表单中“删除”,只留下正确的选项。但是如果用户不选择“其他”呢?我不确定将提交什么值.........我建议然后使用隐藏字段,然后检查该字段是否有值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-21
  • 2011-01-02
  • 2014-06-24
  • 2012-10-20
  • 1970-01-01
  • 2021-10-16
  • 1970-01-01
相关资源
最近更新 更多