【问题标题】:display a input filed when user selects other for title in a select pull down list当用户在选择下拉列表中选择其他标题时显示输入字段
【发布时间】:2013-09-16 10:45:00
【问题描述】:

当用户在标题选择下拉菜单中选择其他时,显示文本字段的最佳方式是什么

我目前得到的代码是:

<%= f.input :parenttitle, label: "Your Title", as: :select, collection:  [["Miss","Miss"],["Mr","Mr"],["Mrs","Mrs"], ["Ms","Ms"],["Other","Other"],["Dr","Dr"]], :include_blank => "-Select one-"  %>
<%= f.input :parenttitle, label: false,  input_html: {  id: "parenttitle_other", value: "" }%>  

我正在使用以下js代码来初始隐藏该字段,然后在用户选择其他时显示它

$("#parenttitle_other").hide()

$("#saolf_parenttitle").change(function() { 
    if ($("#saolf_parenttitle").val()=="Other") 
        $("#parenttitle_other").show(); 
    else $("#parenttitle_other").hide(); 
});

我对选择和输入字段使用了相同的变量。

他们是只使用 ruby​​/rails 来编写代码的更好方法吗?如果选择了其他字段,那么在模型级别为另一个字段添加另一个变量会更好吗?

【问题讨论】:

  • 我认为最好使用不同的变量并将它们合并到后端。但是,我很想知道您当前的代码是否按预期工作?
  • 我同意 - 也许将 f.input :parenttitle_other 作为第二个输入,并在发布后合并控制器中的参数。

标签: javascript ruby-on-rails ruby twitter-bootstrap simple-form


【解决方案1】:

没关系,我不得不使用第二个变量,并在控制器创建和更新方法中输入以下代码

if params[:saolf][:parenttitle] == 'Other' 
  params[:saolf][:parenttitle] = params[:saolf][:parenttitleother]
end  

我仍然认为可能有更好和更多的 ruby​​/rails 方式,我可以轻松添加下拉选择标题字段,当用户选择“其他”时,它会自动显示一个文本字段并允许您通过输入值它。

一旦你开始使用 ruby​​/rails 编写代码,你总能学会更好的方法来做事,而且一切都在一行中

【讨论】:

    【解决方案2】:

    您应该避免对输入使用相同的名称,否则只会使用最后一个。所以,如果你从你的选择框中选择了一些东西,而你的输入框是空白的,params[:parenttitle] 仍然是''。

    您可以命名第二个 parenttitle_other 并在您的控制器中执行类似的操作:

    parent_title = params[:parenttitle] == 'other' ? params[:parentitle_other] : params[:parenttitle]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-03
      相关资源
      最近更新 更多