【问题标题】:How to show a text field based on user's selection?如何根据用户的选择显示文本字段?
【发布时间】:2011-05-26 18:36:29
【问题描述】:

我有一个数组

ABC = ["A","B","C"]

<%= f.select :abc, model::ABC, :include_blank => true %>

如果我选择 C,那么我想显示“城市”和“州”的输入字段。否则,应该隐藏这些字段。有什么简单的方法可以做到这一点。我不想使用 jQuery 或 Ajax。

【问题讨论】:

  • 您的意思是要根据用户的选择更改显示哪些元素?
  • true %> 只有当我选择 C ​​我希望属性 city 和 state 应该显示 else
    true %> 没问题
  • 您希望城市和州字段与选择菜单位于同一页面上吗?还是在下一页?
  • 同一页。我想要确切的功能,比如当我们填写任何类型的表单时,如果我们选择“其他”选项,我们会看到一个要填写的文本框。
  • 是你不懂jQuery,还是希望你的页面不用javascript也能正常工作?

标签: ruby-on-rails dom-events


【解决方案1】:

我不知道如何在不使用 javascript 的情况下更改正在显示的字段。

您可以做的是始终显示城市和州字段,但仅在选择菜单设置为 C 时才需要它们。例如,定义一个验证规则,如果选择菜单设置为 C,则需要字段。在你的 lib/ 目录,使 require_if_c_validator.rb

class RequireIfCValidator < ActiveModel::EachValidator
  def validate_each object, attribute, value
    if object.your_attribute_name == 'C' && value == nil
      object.errors[attribute] < 'is required'
    end
  end
end

然后在您的模型中,在城市和州上调用它:

validate :city, :require_if_c => true
validate :state, :require_if_c => true

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-19
    • 2023-04-09
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多