3

1.如何在编辑记录时使文本字段不可编辑(可读=假)

我的表单查看代码

  <div class="field">
    <%= f.label t :profile_name %><br />
    <%= f.text_field :profile_name %>
  </div>

2.如何在编辑记录时使字段可见。我在数据库表中有一个字段,我只想在编辑记录时显示以填写,但是在创建新记录时该字段不可见。

解决:

别介意伙计们,我得到了解决方案,

1. 
<div class="field">
  <%= f.label t :profile_name %><br />
  <%= f.text_field :profile_name, :readonly => f.object.persisted? %>
</div>

2. 
<% if f.object.persisted?%>
  <div class="field">
    <%= f.label t :another_field %><br />
    <%= f.text_field :another_field%>
  </div>
<% end %>
4

2 回答 2

6

如果您希望您的文本框不可编辑,您可以使用小 css 或在前端执行如下操作:

 <div class="field">
    <%= f.label t :profile_name %><br />
    <%= f.text_field :profile_name, disabled: disabled %>
 </div>

或添加:readonly => true而不是disabled. 所以,

<div class="field">
    <%= f.label t :profile_name %><br />
    <%= f.text_field :profile_name, readonly: true %>
 </div>

在您的视图中添加禁用以制作不可编辑的文本框。如果它不起作用,我们也可以在 css 中做。让我知道它是否有效。

于 2013-02-12T10:40:29.507 回答
1

回答那些找到这个的人。我的问题非常接近。我有一个我想显示的字段,但没有可编辑的。我正在使用设计,并且只允许通过设计视图设置电子邮件和密码。

1)禁用表单中的编辑(此步骤提供零安全性):

<%= f.text_field :email, readonly: true %> 

2)防止客户端的恶作剧(这一步是实际的保护):

    # Never trust parameters from the scary internet, only allow the white list through.
    def user_params
      # params.require(:user).permit(:email, :phone_number, :password, :password_confirmation)
      # email and password must be edited via devise controller
      params.require(:user).permit(:phone_number)
    end

2b)或者,您可以从编辑集中删除值:

def update
  params['user'].delete('email')
  ...
end
于 2016-05-06T20:45:40.903 回答