加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails:有条件地显示/隐藏表单字段的最佳方式

发布时间:2020-12-16 22:14:46 所属栏目:百科 来源:网络整理
导读:我有一个模型文档,它具有属性种类和上下文. Kind是一个整数,用作枚举(使用优秀的active_enum gem).上下文仅适用于类型为“2”的文档,即如果文档是2以外的任何类型,则上下文将为空白. 所以在表单页面中创建一个新文档,我有一个 select选择类型,以及最初隐藏的
我有一个模型文档,它具有属性种类和上下文. Kind是一个整数,用作枚举(使用优秀的active_enum gem).上下文仅适用于类型为“2”的文档,即如果文档是2以外的任何类型,则上下文将为空白.

所以在表单页面中创建一个新文档,我有一个< select>选择类型,以及最初隐藏的上下文的textarea:

<%= form_for @document do |f| %>

  ...  

  <%= f.text_area :context,placeholder: 'Context',style: 'display:none' %>

  <%= f.select :kind,Document.active_enum_for(:kind).to_select %>

  ...

<% end %>

并且使用jQuery的show()和hide()方法显示和隐藏textarea,该函数绑定到下拉列表中的change()事件.

到现在为止还挺好.但是在文档的编辑页面上,我不希望上下文textarea始终隐藏在初始页面加载上,因为我们可能正在编辑类型为2的文档.所以我希望textarea最初显示为我们是编辑类型2的文档,但在其他情况下隐藏.

这就是我现在拥有的:

<% if @document.kind == 2 %>
  <%= f.text_area :context,placeholder: 'Context' %>
<% else %>
  <%= f.text_area :context,style: 'display:none' %>
<% end %>

有没有更好的方法来做到这一点?这对我来说有点冗长和多余;有没有办法我只能调用f.text_area并有条件地包含style:选项?

还是我在思考这个?

解决方法

用这个 :
<%= f.text_area :context,style: "#{'display:none' if @document.kind == 2}" %>

或者你可以为此添加一个css类,

display-none{
  display:none;
}

<%= f.text_area :context,class: "#{'display-none' if @document.kind == 2}" %>

谢谢

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读