首页 > 解决方案 > RAILS:使用呈现形式的只读字段

问题描述

我在名为 _form.html.haml 的视图中有一个包含电子邮件文本字段和其他类型字段的表单视图,如下所示:

....
= easy_form_for @form, label_col: 'col-md-2', control_col: 'col-md-10' do |f|

    = f.text_field :name,  required: true
    = f.text_field :email, required: true
    = f.text_area  :description, rows: 5
....

继承自该表单的 edit.html.haml 视图如下:

...
%h2.page-header= page_title

= render 'form'
...

我想在 edit.html.haml 视图中在此表单上打一个补丁,只是将电子邮件字段变灰,并将表单的其他字段保持原样

标签: ruby-on-rails

解决方案


您可以向部分发送参数form并在那里处理只读部分。

= render partial: 'form', locals: { disable_email: true }

如果form部分没有收到任何disable_email内容,它将默认为false.

....
- disable_email = local_assigns.has_key?(:disable_email) ? disable_email : false
= easy_form_for @form, label_col: 'col-md-2', control_col: 'col-md-10' do |f|

  = f.text_field :name,  required: true
  = f.text_field :email, required: true, readonly: disable_email
  = f.text_area  :description, rows: 5
....

推荐阅读