如何根据 Ruby on Rails 中的表单选择创建文本框警报/悬停弹出文本?

Posted

技术标签:

【中文标题】如何根据 Ruby on Rails 中的表单选择创建文本框警报/悬停弹出文本?【英文标题】:How do I create a text box alert/ hover pop up text depending on form selection in Ruby on Rails? 【发布时间】:2021-09-24 02:59:17 【问题描述】:

到目前为止,我在form.html.erb 中有此代码,但它并没有按照我想要的方式工作。它只显示占位符值。 我想要做的是:当用户选择 A 时,我希望选择 A 旁边的文本框显示一些文本以提供有关该选择的更多详细信息。

<%= form.label :title %><br>
<%= form.select :title, ['A', 'B','C','D' ]%>
<%= form.text_field : Content, class:"form-control", placeholder:'text here', style:"#'display: This is A' if form.object.title == 'A'" %>

【问题讨论】:

你遇到了什么错误? 您好@Eyeslandic,感谢您编辑内容。我还对其进行了编辑以澄清正在发生的事情。它基本上不起作用,只是显示占位符。我想添加多个 if 语句,例如,如果用户选择 B,则会显示文本框中的其他一些内容。我希望这已经足够清楚了! 【参考方案1】:

Rails Form Helpers 不会代表你做所有事情,如果你想在表单周围做一些魔法,你必须放一些 javascript

在您的情况下,如果您只想显示一个简单的警报以显示所选选项信息,您可以这样做:

 <% ruby_var = "this is ruby variable"; options = 
      "A": "I like ice cream and I like books",
      "B": "I like pizza and I do not like books",
      "C": ruby_var
    .to_json
 %>

<%= form.select(:title, ['A', 'B','C','D' ], , :onChange =>"javascript: alert(#options[this.value]);")%>

如果你想要更多,写你自己的js来操作dom元素

【讨论】:

谢谢!这行得通!但是,我想知道如何为警报使用一些嵌套的 if 语句。 For example, when A is selected -> "here are the details for choice A", and when B is selected -> "here are the details for choice B".我似乎找不到此输出代码的解决方法。 @user16453313 这个代码This is $this.value 已经做了,当你选择A 时,$this.value 是A。 对不起,我无法很好地解释它。因此,当我说“这里是详细信息”时,我的意思是每个选择都有不同的内容。喜欢: A=> 我喜欢冰淇淋,我喜欢书 B => 我喜欢披萨,但我不喜欢书。详细信息不必包括 $this.value。我希望它很清楚! @user16453313 我更新了我的答案,option 这里可能是您从 db 或控制器逻辑上获得的数据,它是 ruby​​。

以上是关于如何根据 Ruby on Rails 中的表单选择创建文本框警报/悬停弹出文本?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据从下拉列表中选择的 CATEGORY 来控制 NEW/EDIT 视图中的列标题。带有 MYSQL 的 Ruby on Rails

通过单击 Ruby on Rails 中的按钮生成表单

Ruby on Rails 表单中的 select 和 onChange

Ruby on Rails 表单添加带有文本框的“其他”选项以选择下拉菜单

如何在 ruby​​ on rails 中发布数据

如何在 Ruby-on-Rails 中生成 PDF 表单