1

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

我现在得到的代码是:

<%= 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 来编写此代码的更好方法吗?对您来说,另一个字段的另一个变量是否更好,如果选择了其他字段,则在模型级别将其添加到原始字段中?

4

2 回答 2

0

您应该避免对输入使用相同的名称,否则只会使用最后一个。因此,如果您从选择框中选择了某些内容,并且您的输入框紧接着是空白的,params[:parenttitle]则仍然是''.

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

parent_title = params[:parenttitle] == 'other' ? params[:parentitle_other] : params[:parenttitle]
于 2013-09-12T08:09:38.743 回答
0

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

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

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

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

于 2013-09-13T09:15:40.910 回答